ссылка на параметр с использованием динамического SQL - PullRequest
0 голосов
/ 15 мая 2018

В приведенном ниже выражении используется комбинация переменной связывания, константы и ключевого слова Oracle для вставки.ABC REVIEW и N - фактические значения для вставки.

l_sql :='INSERT INTO EMP
         (BUSINESS_DATE,GROUP_NAME, DELETED,UPDATE_DATE) VALUES
          (:BIZ_DATE,ABC REVIEW,N,SYSDATE)';

Это правильный путь для ссылки на параметр с использованием динамического SQL?Разве это не требует дополнительных скобок?

Ответы [ 3 ]

0 голосов
/ 15 мая 2018

ABC REVIEW и N - фактическое значение, которое нужно вставить.

Если вы не включите литералы в '' (кавычки), Oracle будет рассматривать их как переменные и ожидаемые значения. В вашем случае это вызывает ошибку. То, что предлагает @ user7294900, определенно является правильным решением, однако для него потребуется высокая точность при размещении кавычек, которые иногда приводят к проблемам. Oracle ввел q'[, чтобы справиться с такой ситуацией, когда вам просто нужно поместить свое утверждение в q'[, и оракул будет обрабатывать кавычки. Смотрите ниже:

l_sql :=q'[INSERT INTO EMP
         (BUSINESS_DATE,GROUP_NAME, DELETED,UPDATE_DATE) VALUES
          (:BIZ_DATE,'ABC REVIEW','N',SYSDATE)]';

Подробнее о q' на http://www.oracle -develop.net / display.php? Id = 311

0 голосов
/ 15 мая 2018

Я понял, что для объединения можно использовать трубу.

l_sql='INSERT INTO EMP
       (BUSINESS_DATE,GROUP_NAME,DELETED,UPDATE_DATE) VALUES
        (:BIZ_DATE,'|| 'ABC REVIEW'|| ','|| 'N'|| ',SYSDATE);
0 голосов
/ 15 мая 2018

Просто введите знак кавычки вокруг фактических строковых значений:

  l_sql :='INSERT INTO EMP
     (BUSINESS_DATE,GROUP_NAME, DELETED,UPDATE_DATE) VALUES
      (:BIZ_DATE,''ABC REVIEW'',''N'',SYSDATE)';
...