@romaro

Почему не компилируется эта функция?

Я использую коммьюнити версию DBeaver и, возможно, ошибка связана с ним.

Пробую создать функцию:
CREATE OR REPLACE FUNCTION dao_subject.get_salt_by_contacts_s(p_props json)
RETURNS varchar
LANGUAGE plpgsql
AS $function$
DECLARE
	l_result		varchar;
	l_email 		TEXT	:= p_props ->> 'email';
	l_mobile_phone	TEXT	:= p_props ->> 'mobilePhone';
BEGIN
	SELECT s.password_salt INTO l_result FROM dao_subject.subject s
	WHERE s.email = l_email
		OR s.mobile_phone = l_mobile_phone;
	
	RETURN l_result;
END;
$function$
;


И получаю ошибку:
SQL Error [42601]: Unterminated dollar quote started at position 0 in SQL $function$
;. Expected terminating $$


Заменяю экранирование $function$ на $$ и функция успешно создается, хотя синтаксически эти конструкции равноправны.

Затем открываю новую консоль, тупо копирую код только что созданной функции, пробую выполнить и снова та же ошибка. С другими функциями порядок.

Пока единственная догадка, что DBeaver в каких-то случаях некорректно кодирует некоторые символы и постгрес их не видит
  • Вопрос задан
  • 1260 просмотров
Пригласить эксперта
Ответы на вопрос 1
Melkij
@Melkij
PostgreSQL DBA
Запрос корректен. Посмотрите в логах базы, какой запрос реально отправляет ваш клиент.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы