Я хочу, чтобы 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-буква. Как мне ее реализовать?
Выходная строка OK (в ней есть escape-буква для сохранения одиночной кавычки):
COMMENT ON COLUMN TABLE1.COLUMN1_LV IS 'It''s secret';
НЕ NOK выходная строка, потому что не добавлена escape-буква для одинарной кавычки и не компилируется:
COMMENT ON COLUMN TABLE1.COLUMN1_LV IS 'It's secret';
Мое решение - не проверять, содержит ли описание одинарные кавычки. Я просто заменяю одинарные кавычки столбца источника (описания) двумя одинарными кавычками перед генерацией КОММЕНТАРИЙ НА
строк, а затем I ROLLBACK
.
Есть лучшее решение?