在SQL for Postgres 9数据库中创建函数时出现语法错误

在SQL for Postgres 9数据库中创建函数时出现语法错误,sql,postgresql,relational-database,plpgsql,postgresql-9.1,Sql,Postgresql,Relational Database,Plpgsql,Postgresql 9.1,我试图在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

我试图在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"
附言:我不熟悉Postgres数据库。
如果您有关于如何在plpgsql或SQL for Postgres数据库中创建函数和触发器的教程和书籍,那就太好了

您能按照本节的建议尝试这种方法吗


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;


9.1中的SQL语言不支持命名参数,所以您应该使用$1、$2、。。。有关参数。

删除
开始
结束
。谢谢!!但是现在我有一个新的错误:
ERROR:column“user\u id”不存在
如何调用此函数?为什么要使用过时且不受支持的Postgres版本?我应该使用哪个版本?现在我在“SELECT”处或附近得到
ERROR:syntax ERROR
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;