Я хочу, чтобы 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
.В противном случае необходимо получить управляющее письмо.Как мне это реализовать?
ОК, строка вывода (в ней есть escape-буква для сохранения одиночного qoute):
COMMENT ON COLUMN TABLE1.COLUMN1_LV IS 'It''s secret';
NOT NOK строка вывода, потому что не добавлена escape-буква для одинарной кавычки и не 't compile:
COMMENT ON COLUMN TABLE1.COLUMN1_LV IS 'It's secret';
Мое решение - не проверять, содержит ли описание одинарные кавычки.Я просто заменяю одиночную кавычку столбца источника (описания) двумя одинарными кавычками перед генерацией COMMENT ON
строк, а затем я ROLLBACK
.
Любое лучшее решение?