如何在SqlDeveloper中成功运行此类查询?
execute immediate q'#
insert into results(SrcProcedure)
values('d/&'s*73;.f45')
#';
答案 0 :(得分:2)
您需要了解语言的逃避规则。在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'')...
如果use q'{...}'
:
execute immediate q'{
insert into results(SrcProcedure)
values('d/&''s*73;.f45')
}';
相关:
答案 1 :(得分:1)
问题是您正在尝试插入值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!')
#';