PL / SQL,如何在string中单引号转义?

在Oracle PL / SQL中,如何在string中转义单引号? 我试过这种方式,这是行不通的。

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; / 

你可以使用文字引用:

 stmt := q'[insert into MY_TBL (Col) values('ER0002')]'; 

文字文件可以在这里find 。

或者,您可以使用两个引号来表示单引号:

 stmt := 'insert into MY_TBL (Col) values(''ER0002'')'; 

具有Q语法的文字引用机制更加灵活和可读,IMO。

这里有一个博客文章 ,应该帮助逃避string中的蜱。

以下是所述post中最简单的方法:

最简单和最常用的方法是在双方中使用带有两个单引号的单引号。

从双重select'testing单引号''';

以上陈述的输出将是:

testing单引号'

只需说明您需要额外的单引号字符来打印单引号字符。 这就是说,如果你把两个单引号字符Oracle将打印一个。 第一个>一个像转义字符。

这是在Oracle中打印单引号的最简单的方法。 但是当你不得不打印一组引号而不是一个引号时,它会变得复杂。 在这种情况下,以下方法正常工作。 但是这需要更多的打字工作。

只需在FOR之前放置以下语句:

 set escape '\';