[英]How do I get rid of this SQL error from the end of my query when inserting within a procedure?
不確定這是否可能,但我在查詢結束時遇到了一個奇怪的錯誤。 知道為什么嗎?
這是代碼:
CREATE OR REPLACE PROCEDURE NewUser (g_name VARCHAR, f_name VARCHAR, u_password VARCHAR, u_email VARCHAR, u_dob DATE, p_name VARCHAR, team_id INT)
LANGUAGE plpgsql
AS $$
DECLARE s_user_id INT;
DECLARE p_user_id INT;
BEGIN
IF p_name = NULL AND team_id = NULL THEN
s_user_id = (SELECT MAX(user_id) FROM spectator) + 1;
INSERT INTO spectator (user_id, given_name, family_name, password, email, date_of_birth)
VALUES (s_user_id, g_name, f_name, u_password, u_email, u_dob);
ELSE
p_user_id = (SELECT MAX(user_id) FROM player) + 1;
INSERT INTO player (user_id, given_name, family_name, password, email, date_of_birth, player_name, team_id)
VALUES (p_user_id, g_name, f_name, u_password, u_email, u_dob, u_name, team_id);
END;
$$;
錯誤:“;”處或附近的語法錯誤第 15 行:結束; ^ SQL state:42601 字符:727
您需要使用END IF;
來終止IF
語句; . 此外,要對照NULL
檢查變量,您需要IS NULL
而不是= NULL
。
CREATE OR REPLACE PROCEDURE NewUser (g_name VARCHAR, f_name VARCHAR, u_password VARCHAR, u_email VARCHAR, u_dob DATE, p_name VARCHAR, team_id INT)
LANGUAGE plpgsql
AS $$
DECLARE s_user_id INT;
DECLARE p_user_id INT;
BEGIN
IF p_name IS NULL AND team_id IS NULL THEN
s_user_id = (SELECT MAX(user_id) FROM spectator) + 1;
INSERT INTO spectator (user_id, given_name, family_name, password, email, date_of_birth)
VALUES (s_user_id, g_name, f_name, u_password, u_email, u_dob);
ELSE
p_user_id = (SELECT MAX(user_id) FROM player) + 1;
INSERT INTO player (user_id, given_name, family_name, password, email, date_of_birth, player_name, team_id)
VALUES (p_user_id, g_name, f_name, u_password, u_email, u_dob, u_name, team_id);
END IF; --> here
END;
$$;
如果您正確縮進代碼,則更容易發現此類錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.