PSQL 存储过程 IF 语句语法错误 (v13.2)

PSQL Stored Procedure IF Statement Syntax Error (v13.2)

提问人:Rory L. 提问时间:6/10/2021 最后编辑:Rory L. 更新时间:6/10/2021 访问量:32

问:

TLDR:在“IF”处出现语法错误

我正在尝试创建一个存储过程,用于在尝试插入之前检查唯一display_name,并且在尝试在 PowerShell 中通过 PSQL 创建时,我在“IF”处出现语法错误。我已经阅读了官方文档,查看了多个教程,并查看了此处(StackOverflow)。知道问题是什么吗?

FWIW:我最熟悉MariaDB。

CREATE PROCEDURE sp_create_user (
    a_username VARCHAR(255)
    ,a_password VARCHAR(200)
    ,a_display_name VARCHAR(20)
) 
LANGUAGE SQL
AS $$

IF EXISTS(SELECT id FROM users WHERE display_name = a_display_name) THEN
    raise exception 'duplicate display_name: %', a_display_name using hint = 'enter a different display_name';
END IF;

INSERT INTO users (username, password, display_name)
VALUES (a_username, a_password, a_display_name)
RETURNING id, username, display_name;

$$;
postgresql if-statement 存储过程 plpgsql

评论

0赞 6/10/2021
SQL中没有,如果要使用过程代码,则需要使用。IFlanguage plpgsql
0赞 6/10/2021
"在尝试插入之前检查唯一display_name“——唯一约束是更好的解决方案
0赞 Rory L. 6/10/2021
谢谢你的回答。不幸的是,我在使用时遇到了同样的错误。我正在执行此检查,因为我想将此信息发送给用户。LANGUAGE plpgsql
1赞 6/10/2021
此处记录了 PL/pgSQL 过程的结构。
0赞 Rory L. 6/10/2021
哦,:D添加了,它现在可以工作了。非常感谢!现在确定如何接受评论作为答案。BEGIN ... END

答: 暂无答案