Luk*_*der 1 sql oracle plsql escaping
我在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'')';
Run Code Online (Sandbox Code Playgroud)
观察令人讨厌的转义撇号重复以形成有效的SQL/PL/SQL语法.有什么方法可以引用SQL字符串文字,这样我就不用再逃避了吗?将SQL字符串从实际执行复制粘贴到PL/SQL程序中会很好,而不需要对撇号进行繁琐的修补.
(我故意在这里问这个问题,用我自己的答案记录引用功能)
自Oracle 10g称为"引用字符串文字"以来,有一个鲜为人知的特性.你可以写:
EXECUTE IMMEDIATE q'[INSERT INTO foo (col) VALUES ('somevalue')]';
Run Code Online (Sandbox Code Playgroud)
您支付的价格是您的字符串文字不再包含,]因为它现在是字符串终止令牌的一部分.以这种方式使用的可能字符是:
q'! ... !'q'[ ... ]'q'{ ... }'q'( ... )'q'< ... >'| 归档时间: |
|
| 查看次数: |
412 次 |
| 最近记录: |