Определение функции PostgreSQL в SQuirreL: unterminated dollar-quoted string
у меня есть следующее определение функции для базы данных PostgreSQL 9.3.4:
CREATE OR REPLACE FUNCTION update_modified_timestamp()
RETURNS TRIGGER AS $$
BEGIN
NEW.modified_at = now();
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
когда я пытаюсь выполнить это в SQuirreL (3.5.3 или 3.6), я получаю следующую ошибку:
Error: ERROR: unterminated dollar-quoted string at or near "$$
BEGIN
NEW.modified_at = now()"
Position: 77
SQLState: 42601
ErrorCode: 0
до сих пор я узнал это можно смягчить с помощью одинарных кавычек чтобы разграничить тело функции следующим образом:
CREATE OR REPLACE FUNCTION update_modified_timestamp()
RETURNS TRIGGER AS '
BEGIN
NEW.modified_at = now();
RETURN NEW;
END;
' LANGUAGE plpgsql;
все же я хотел бы знать, не может ли это быть решено иначе - я думаю, что это должно быть возможно, так как Flyway can выполните этот сценарий, и он использует тот же драйвер JDBC, который настроен в SQuirreL.
обновление: @a_horse_with_no_name отметил, что эта ошибка не имеет ничего общего с драйвером JDBC, но с тем, как белка анализирует инструкцию SQL и разбивает ее на куски перед отправкой их в базу данных. Таким образом, остается вопрос:может ли белка отправить запрос raw / unparsed? я искал совсем немного, не мог найти способ сделать что.
1 ответов
вы можете изменить разделитель операторов, чтобы оператор не разделялся на ;
:
на: сессии → Свойства → среда SQL → Заявление Разделитель
даже если вы не можете изменить его на пустую строку, вы можете изменить его, например,//
, что позволяет выполнить оператор в вопросе.