我正在嘗試在 supabase 中創建一個新函式。我是 SQL 和 postgreSQL 的新手,所以我不確定自己在做什么。無論如何,我想創建一個函式來檢查一個值是否在一個整數陣列中。如果是則回傳 0.8 如果不是則回傳 1.0。
create or replace function is_liked(id bigint, liked bigint[])
returns float
language plpgsql
as
$$
DECLARE
addedNum float
begin
if exists(SELECT $1 = ANY($2))
THEN
set nuaddedNumm := 0.8
else
set addedNum := 1
return addedNum
end;
$$
這是我的代碼,我收到錯誤訊息“無法運行 sql 查詢:“開始”處或附近的語法錯誤”
uj5u.com熱心網友回復:
您;在變數宣告和所有其他陳述句之后缺少一個。并且如手冊中所述,PL/pgSQL 中的賦值運算子是:=(或=),而不是 SET。
正如手冊中所述, an IFneeds an END IF.
所以正確的語法是:
create or replace function is_liked(id bigint, liked bigint[])
returns float
language plpgsql
as
$$
DECLARE
addedNum float; --<< missing ;
begin
if exists(SELECT $1 = ANY($2))
THEN
nuaddedNumm := 0.8; --<< no SET, missing ;
else
addedNum := 1; --<< no SET, missing ;
end if; --<< missing END IF
return addedNum; --<< missing ;
end;
$$
但是,您根本不需要變數或 EXISTS。也不需要通過編號來參考引數
create or replace function is_liked(id bigint, liked bigint[])
returns float
language plpgsql
as
$$
begin
if id = ANY(liked) THEN
return 0.8;
else
return 1;
end if;
end;
$$
事實上你甚至不需要 PL/pgSQL:
create or replace function is_liked(id bigint, liked bigint[])
returns float
language sql
as
$$
select case
when id = ANY(liked) then 0.8
else 1.0
end;
$$;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/536554.html
上一篇:每次我嘗試在資料庫中添加資料時,我總是收到錯誤訊息:SQLSTATE[42703]:Undefinedcolumn:7ERROR:column
