在 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, ... 作为参数。
我正在尝试在 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, ... 作为参数。