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

Syntax Error creating function in SQL for Postgres 9 database

我正在尝试在 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 数据库的新手。 如果您有关于如何在 plpgsql 或 SQL 中为 Postgres 数据库创建函数和触发器的教程和书籍的良好资源,那就太好了!

你能试试这个 Postgresql 9.1 Create Function

中建议的方法吗
CREATE FUNCTION getUser(int)
RETURNS TABLE(id int, nom text, prenom text)
AS $$ SELECT id, nom, prenom 
      FROM security.users
      WHERE id =  $$
LANGUAGE SQL;

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 =  
$$ LANGUAGE sql;

SQL 9.1 中的语言不支持命名参数,因此您应该使用 $1, $2, ... 作为参数。