首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PL/SQL,如何转义字符串中的单引号?

PL/SQL,如何转义字符串中的单引号?
EN

Stack Overflow用户
提问于 2012-07-04 00:36:03
回答 3查看 335.2K关注 0票数 140

在Oracle PL/SQL中,如何转义字符串中的单引号?我试过这种方法,它不起作用。

代码语言:javascript
复制
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;
/
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-07-04 00:38:44

您可以使用文字引号:

代码语言:javascript
复制
stmt := q'[insert into MY_TBL (Col) values('ER0002')]';

文字can be found here的文档。

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

代码语言:javascript
复制
stmt := 'insert into MY_TBL (Col) values(''ER0002'')';

使用Q语法的文字引用机制更灵活,可读性更好,IMO。

票数 219
EN

Stack Overflow用户

发布于 2018-02-09 13:39:13

除了上面DCookie的答案之外,您还可以使用chr(39)作为单引号。

当我必须基于大量现有数据创建许多insert/update语句时,我发现这特别有用。

下面是一个非常快速的例子:

假设我们有一个非常简单的表Customers,它有两列: FirstName和LastName。我们需要将数据移动到Customers2中,因此需要生成一组INSERT语句。

代码语言:javascript
复制
Select 'INSERT INTO Customers2 (FirstName, LastName) ' ||
       'VALUES (' || chr(39) || FirstName || chr(39) ',' || 
       chr(39) || LastName || chr(39) || ');' From Customers;

我发现这在将数据从一个环境移动到另一个环境或快速重建环境时非常有用。

票数 16
EN

Stack Overflow用户

发布于 2020-04-01 04:01:29

EXECUTE IMMEDIATE 'insert into MY_TBL (Col) values(''ER0002'')';为我工作。用两对单引号结束varchar/string就行了。其他选项可以使用using关键字EXECUTE IMMEDIATE 'insert into MY_TBL (Col) values(:text_string)' using 'ER0002';记住,using关键字将不起作用,但是,如果您正在使用EXECUTE IMMEDIATE执行带参数的DDL,则使用引号将对DDL起作用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11315340

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档