Как я могу успешно выполнить такой запрос в SqlDeveloper?
execute immediate q'#
insert into results(SrcProcedure)
values('d/&'s*73;.f45')
#';
Как я могу успешно выполнить такой запрос в SqlDeveloper?
execute immediate q'#
insert into results(SrcProcedure)
values('d/&'s*73;.f45')
#';
Вам нужно выучить правила экранирования для вашего языка. В SQL '
является специальным символом. Выход для него ''
:
execute immediate q'#
insert into results(SrcProcedure)
values(''d/&''''s*73;.f45'')
#';
Правило: Для каждого уровня вложенности необходимо дублировать все одинарные кавычки.
d/&'s*73;.f45
'd/&''s*73;.f45'
...values(''d/&''''s*73;.f45'')...
Вы можете обойтись меньшим количеством кавычек, если используете q'{...}'
:
execute immediate q'{
insert into results(SrcProcedure)
values('d/&''s*73;.f45')
}';
Связанный:
q'# ... #';
работает нормально. Проблема в том, что строка внутри строки, внутри строки должна быть экранирована.
- person Jon Heller; 29.02.2016
Проблема в том, что вы пытаетесь вставить значение d/&'s*73;.f45
, а символ '
интерпретируется как конец значения.
Вам нужно экранировать символ '
:
execute immediate q'#
insert into results(SrcProcedure)
values('d/&''s*73;.f45')
#';
Или вы можете вложить альтернативный механизм цитирования, чтобы избежать экранирования строк:
execute immediate q'#
insert into results(SrcProcedure)
values(q'!d/&'s*73;.f45!')
#';