[英]How do I get rid of this SQL error from the end of my query when inserting within a procedure?
Not sure if this is even possible but im getting a weird error at the end of my query.不确定这是否可能,但我在查询结束时遇到了一个奇怪的错误。 Any idea why?
知道为什么吗?
Here is the code:这是代码:
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;
$$;
ERROR: syntax error at or near ";"
错误:“;”处或附近的语法错误LINE 15: END;
第 15 行:结束; ^ SQL state: 42601 Character: 727
^ SQL state:42601 字符:727
You need to terminate the IF
statement with END IF;
您需要使用
END IF;
来终止IF
语句; . . Also to check a variable against
NULL
, you need IS NULL
rather than = NULL
.此外,要对照
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;
$$;
This types of errors are easier to spot if you properly indent the code.如果您正确缩进代码,则更容易发现此类错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.