Я ищу для отладки запроса Microsoft SQL внутри Posgresql (короче говоря, я предпочитаю сообщения об ошибках, которые он возвращает), когда я наткнулся на некоторый SQL, который умножал выбор подстроки на целое число, теперь я, очевидно, мог бы привести каждую частьиспользуя ::integer
, однако есть много подстрок, нуждающихся в приведении, и многие запросы, которые я хотел выполнить, поэтому я решил, что могу облегчить свою жизнь, используя оператор для решения этой проблемы с помощью следующей функции.
CREATE OR REPLACE FUNCTION public.multiplytext2int(text,integer)
RETURNS integer AS
$$
SELECT CASE
WHEN $1 ~ '^[0-9]+$'
THEN $1::integer * $2
ELSE 0::integer
END
$$
LANGUAGE sql IMMUTABLE;
очевидно, логика не полностью герметична, но ее будет достаточно для запросов, которые я буду выполнять, поэтому затем я пытаюсь создать оператор
CREATE OPERATOR * (
LEFTARG = text
,RIGHTARG = integer
,FUNCTION = multiplytext2int
)
, когда я запускаю это, я получаю следующую ошибку
ВНИМАНИЕ: атрибут оператора «функция» не распознан ОШИБКА: необходимо указать процедуру оператора
********** Ошибка **********
ОШИБКА: должна быть указана процедура оператора. Состояние SQL: 42P13
что я здесь не так делаю?
в конечном итоге яищет возможность набирать SELECT '1'::text * 2::integer
без оператора, ошибки не существует.