我试图在postgres_9数据库中创建以下函数:
CREATE OR REPLACE FUNCTION getUser(IN user_id INT8)
RETURNS TABLE(id INT8, nom TEXT, prenom TEXT)
AS $$
BEGIN
SELECT id, nom, prenom
FROM security.users
WHERE id = user_id
END
$$ LANGUAGE sql;但我得到了以下错误:
ERROR: syntax error at or near "SELECT"PS:我是Postgres数据库的新手。如果您有关于如何为Postgres数据库在plpgsql或SQL中创建函数和触发器的教程和书籍的良好资源,那就太好了!
发布于 2017-05-18 17:31:18
PostgreSQL有两种用于存储过程(函数)的默认语言: PLpgSQL和SQL。SQL是原始SQL。PLpgSQL是基于ADA的基于块结构的过程语言--块由关键字BEGIN、END来定义.您可以用这两种语言编写您的函数。您应该正确地指定语言。
CREATE OR REPLACE FUNCTION getUser(IN user_id INT8)
RETURNS TABLE(id INT8, nom TEXT, prenom TEXT)
AS $$
BEGIN
RETURN QUERY SELECT id, nom, prenom
FROM security.users
WHERE id = user_id;
END
$$ LANGUAGE plpgsql;或
CREATE OR REPLACE FUNCTION getUser(IN user_id INT8)
RETURNS TABLE(id INT8, nom TEXT, prenom TEXT)
AS $$
SELECT id, nom, prenom
FROM security.users
WHERE id = $1
$$ LANGUAGE sql;9.1中的SQL语言不支持命名参数,所以您应该使用$1,$2,.关于参数。
发布于 2017-05-18 08:27:07
您能按照这个PostgreSQL9.1创建函数中的建议使用这种方法吗?
CREATE FUNCTION getUser(int)
RETURNS TABLE(id int, nom text, prenom text)
AS $$ SELECT id, nom, prenom
FROM security.users
WHERE id = $1 $$
LANGUAGE SQL;https://stackoverflow.com/questions/44042130
复制相似问题