相关疑难解决方法(0)

在PLSQL中转义单引号

我希望PLSQL生成如下字符串:

COMMENT ON COLUMN TABLE.COLUMN IS 'comment from database';
Run Code Online (Sandbox Code Playgroud)

我的解决方案是:

declare
  str_comment varchar2(4000);
begin
  for rec in (select table_name, column_name, description from description_table)
  loop
    str_comment:='COMMENT ON COLUMN '||rec.table_name||'.'||rec.column_name||'  IS '''||rec.description||'''; ' ;
    dbms_output.put_line(str_comment);
  end loop;
end;
Run Code Online (Sandbox Code Playgroud)

如果输入不包含单个qoutes,则输出正常rec.description.否则需要转义信.我该如何实施呢?

OK输出行(它有转义字以保留单个qoute):

COMMENT ON COLUMN TABLE1.COLUMN1_LV  IS 'It''s secret';
Run Code Online (Sandbox Code Playgroud)

NOT NOK输出行,因为没有添加单引号的转义字母且不编译:

COMMENT ON COLUMN TABLE1.COLUMN1_LV  IS 'It's secret';
Run Code Online (Sandbox Code Playgroud)

我的解决方案是不检查描述是否包含单引号.我只是在生成COMMENT ON字符串然后我之前用两个单引号替换source(description)列的单引号ROLLBACK.

更好的解决方案?

oracle plsql

27
推荐指数
2
解决办法
7万
查看次数

有没有办法在Oracle中引用包含撇号的SQL字符串以避免需要转义撇号?

我在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程序中会很好,而不需要对撇号进行繁琐的修补.

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

sql oracle plsql escaping

1
推荐指数
1
解决办法
412
查看次数

标签 统计

oracle ×2

plsql ×2

escaping ×1

sql ×1