Oracle экранируем кавычки или Волшебный Ку

добавлено: 19 окт 12
понравилось:0
просмотров: 16754
комментов: 0

теги:

Автор: Myp3_u_K

Чалышев Максим Михайлович

В Oracle операторах, в которых требуется передача запроса в качестве текстовой строки
иногда в тексте sql строки требуется передать символ кавычек
обычно это взывает недоумение интерпретатора запросов oracle
для этого используется оператор Oracle - q
рассмотрим несколько примеров
например фраза I'm О’Коннор
Подари, продай, обменяй - множество недорогих и отличных вещей: объявления вместо AVITO - ВКонтакте

скрипт

   SET serveroutput ON
   begin
     DBMS_OUTPUT.PUT_LINE('I'm О’Коннор');
   end;'


вызовет ошибку
для корректного выполнения можно написать следующее

    SET serveroutput ON
    begin
      DBMS_OUTPUT.PUT_LINE('I''m О''Коннор');
    end;


но в больших и сложных зaпросах с большим кол вом текстовых выражений

логичнее было бы использовать оператор экранирования кавычек Q

BEGIN
  dbms_output.put_line(q'[I'm О'Коннор]');
END;


приведем так же некоторые другие интересные примеры

select DBMS_XMLGEN.getxml (q'[select count(ao.OBJECT_TYPE) countOBject, ao.OBJECT_TYPE OT , max(ao.CREATED) maxdtcr
     from all_objects ao where owner='SYS' group by OBJECT_TYPE order by OBJECT_TYPE]') myxml from dual;
execute immediate(q'[insert into q values('qwerty')]'


Чалышев М.М www.orasource.ru

Комментарии




Необходимо войти на сайт, чтобы оставлять комментарии