我正在創建一個函式,允許我有條件地更新表中的特定列。但是,當我嘗試運行以下代碼時,我收到一條錯誤訊息,表明在“IF”處或附近存在語法錯誤。我對 Postgres 有點陌生,所以很有可能。我無法理解 Postgres 中的一些概念/語法。有人可以通過指出我必須犯的錯誤來幫助我嗎?
CREATE OR REPLACE FUNCTION profiles.do_something(
p_id UUID,
p_condition1 BOOLEAN,
p_condition2 BOOLEAN,
p_condition3 BOOLEAN
)
RETURNS void AS $$
BEGIN
IF p_condition1 IS TRUE THEN
UPDATE tablename SET column1 = null WHERE member_id = p_id;
END IF;
IF p_condition2 IS TRUE THEN
UPDATE tablename SET column2 = null WHERE member_id = p_id;
END IF;
IF p_condition3 IS TRUE THEN
UPDATE tablename SET column3 = null WHERE member_id = p_id;
END IF;
END;
$$ LANGUAGE 'sql';
uj5u.com熱心網友回復:
tl;博士 $$ LANGUAGE 'plpgsql'
$$ LANGUAGE 'sql';
^^^^^
你告訴它把函式體決議為sql. 在 SQL 中,begin是啟動事務的陳述句。
create or replace function test1()
returns void
language sql
as $$
-- In SQL, begin starts a transaction.
-- note the ; to end the statement.
begin;
-- Do some valid SQL.
select 1;
-- In SQL, end ends the transaction.
end;
$$;
在您撰寫的 SQL 中,begin if ...這是一個語法錯誤。
您使用的語言是plpgsql. 在 plpgsql 中,begin是一個啟動塊的關鍵字。
create or replace function test1()
returns void
language plpgsql
as $$
-- In PL/pgSQL, begin starts a block
-- note the lack of ;
begin
-- Do some valid SQL.
select 1;
-- In PL/pgSQL, end ends the block
end;
$$;
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/383288.html
標籤:PostgreSQL的 功能 if 语句 语法错误
上一篇:過濾組內但不參與專案的用戶
