Я пишу функцию, которая требует от меня сохранения некоторого кода JavaScript в таблице базы данных PostgreSQL (это необходимо).Я ищу "ленивый" способ сделать это без изменения моего оператора вставки PostgreSQL, чтобы экранировать специальные символы в каждом случае, когда это может происходить в коде JavaScript.В первую очередь я хочу избежать экранирования в том случае, если код JavaScript стал длиннее.Так как это может быстро запутаться.PostgreSQL предлагает следующие функции:
- quote_literal ()
- quote_ident ()
Ссылка: Функции форматирования строк PostgreSQL
Протестировав обе эти ошибки, я сталкиваюсь с следующей ошибкой:
Ошибка: неопределенный идентификатор в кавычках в или около "": true
На первый взгляд кажется, что моя проблема заключается в самом отформатированном тексте JavaScript.
Есть ли у меня "ленивый" способ избежать экранирования всех этих специальных символов без необходимости делать это вручную?По сути, я хотел бы поместить этот код в переменную и выполнить вставку, используя сохраненную переменную без (в идеале) или с минимальными изменениями хранимого текста JScript.
Ниже приведен пример того, как выглядит мой код:
CREATE OR REPLACE FUNCTION abc.my_function(text, text, text, text, text[])
RETURNS void AS $body$
DECLARE
-- Variable Declarations here
jscript TEXT := quote_ident('/* JScript Comments Here*/ $(document).ready(function(){
// Initialize Datatable ...
$('#Index').Datatable({
"paging": true, // comment here
"responsive": true, // comment here
"pageLength": 25, // comment here
"columnDefs": [ {
...
...
...
}]
});
');
BEGIN
...
...
...
-- Insert static HTML
execute 'Insert into abc.my_table(file, data, gen_flag) values('||'''main.js||','||jscript||','|| '''N''' || ')';
...
...
...
END;
$body$
LANGUAGE 'plpgsql' VOLATILE;