При написании SQL на PostgreSQL нельзя использовать контекстные параметры smart-запросов SQL внутри конструкции DO $$ ... END $$;
Пример того, как нужно использовать контекстные параметры
;WITH myconstants (var0) as (
SELECT
LanguageID
FROM
Users
WHERE
UserID = @eventParam0
)
SELECT
CASE WHEN COALESCE(ld.Description, '') = '' THEN
REPLACE(REPLACE(t.Description, '<p>', ''), '</p>', '')
ELSE
REPLACE(REPLACE(ld.Description, '<p>', ''), '</p>', '')
END
FROM
Tasks t
LEFT JOIN (
SELECT Description
FROM Tasks_AllLocalized (@ContextID, (select var0 from myconstants) )
LIMIT 1
) ld on true
WHERE
TaskID = @ContextID;
|
Пример того, как не нужно использовать контекстные параметры
/*
DO $$
DECLARE
Lang INTEGER;
BEGIN
SELECT
LanguageID
INTO Lang
FROM
Users
WHERE
UserID = @eventParam0;
CREATE TEMPORARY TABLE temp_ld AS
SELECT
Description
FROM
Tasks_AllLocalized (@ContextID, Lang )
LIMIT 1;
END $$;
SELECT
CASE WHEN COALESCE(ld.Description, '') = '' THEN
REPLACE(REPLACE(t.Description, '<p>', ''), '</p>', '')
ELSE
REPLACE(REPLACE(ld.Description, '<p>', ''), '</p>', '')
END
FROM
Tasks t
LEFT JOIN temp_ld ld ON TRUE
WHERE
TaskID = @ContextID;
*/
|