在Oracle PL/SQL中,如何在字符串中转义单引号?我试过这种方式,它不起作用.
declare
stmt varchar2(2000);
begin
for i in 1021 .. 6020
loop
stmt := 'insert into MY_TBL (Col) values(\'ER0002\')';
dbms_output.put_line(stmt);
execute immediate stmt;
commit;
end loop;
exception
when others then
rollback;
dbms_output.put_line(sqlerrm);
end;
/
Run Code Online (Sandbox Code Playgroud)
DCo*_*kie 172
您可以使用文字引用:
stmt := q'[insert into MY_TBL (Col) values('ER0002')]';
Run Code Online (Sandbox Code Playgroud)
文字的文档可以在这里找到.
或者,您可以使用两个引号来表示单引号:
stmt := 'insert into MY_TBL (Col) values(''ER0002'')';
Run Code Online (Sandbox Code Playgroud)
使用Q语法的文字引用机制更灵活,更易读,IMO.
Cor*_*n01 12
除了上面的DCookie的答案,您还可以使用chr(39)作为单引号.
当我必须基于大量现有数据创建大量插入/更新语句时,我发现这特别有用.
这是一个非常简单的例子:
Select 'UPDATE Customers SET LName = ' || chr(39) || 'Doe' || chr(39) || ';' From dual;
Run Code Online (Sandbox Code Playgroud)