我正在尝试在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数据库创建函数和触发器的教程和书籍,这将非常棒!
答案 0 :(得分:1)
您可以按照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 = $1 $$
LANGUAGE SQL;
答案 1 :(得分:0)
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,...作为参数。