【发布时间】:2011-10-04 10:37:26
【问题描述】:
我希望 PLSQL 生成如下字符串:
COMMENT ON COLUMN TABLE.COLUMN IS 'comment from database';
我的解决办法是:
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;
当 rec.description 中不包含单个 qoutes 时,输出正常。否则需要转义信。我应该如何实现它?
OK 输出行(它有转义字母来保存单个 qoute):
COMMENT ON COLUMN TABLE1.COLUMN1_LV IS 'It''s secret';
NOT NOK 输出行,因为没有添加单引号的转义字母并且无法编译:
COMMENT ON COLUMN TABLE1.COLUMN1_LV IS 'It's secret';
我的解决方案是不检查描述是否包含单引号。我只是在生成COMMENT ON 字符串之前将源(描述)列的单引号替换为两个单引号,然后再生成ROLLBACK。
有更好的解决方案吗?
【问题讨论】:
-
用双引号代替单引号就可以了。
ROLLBACK有什么意义?您能否发布整个代码(带有替换和回滚)? -
@Quassnoi 他可能会更新 description_table,然后回滚更新