【问题标题】:Is there a way to quote SQL strings containing apostrophes in Oracle to avoid needing to escape the apostrophe?有没有办法在 Oracle 中引用包含撇号的 SQL 字符串以避免需要转义撇号?
【发布时间】:2017-02-18 13:01:22
【问题描述】:

我用 PL/SQL 写了很多动态 SQL:

-- Let's assume the query is much more complex and bind variables are not a solution here
EXECUTE IMMEDIATE 'INSERT INTO foo (col) VALUES (''somevalue'')';

观察讨厌的转义重复撇号以形成有效的 SQL/PL/SQL 语法。有什么方法可以引用 SQL 字符串文字,这样我就不必再逃避了?将实际执行中的 SQL 字符串复制粘贴到 PL/SQL 程序中会非常棒,无需繁琐地修补撇号。

(我特意在这里问这个问题,用我自己的答案记录引用功能)

【问题讨论】:

    标签: sql oracle plsql escaping


    【解决方案1】:

    自 Oracle 10g 以来有一个鲜为人知的特性,称为“引用字符串文字”。你可以写:

    EXECUTE IMMEDIATE q'[INSERT INTO foo (col) VALUES ('somevalue')]';
    

    您付出的代价是您的字符串文字不能再包含],因为它现在是字符串终止标记的一部分。以这种方式使用的可能字符有:

    • q'! ... !'
    • q'[ ... ]'
    • q'{ ... }'
    • q'( ... )'
    • q'< ... >'

    更多信息:

    【讨论】:

      猜你喜欢
      • 2011-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-17
      • 1970-01-01
      • 1970-01-01
      • 2015-02-28
      • 1970-01-01
      相关资源
      最近更新 更多