在SQL for Postgres 9数据库中创建函数时出现语法错误
我试图在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
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;