首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Postgres 9数据库SQL中语法错误创建函数

Postgres 9数据库SQL中语法错误创建函数
EN

Stack Overflow用户
提问于 2017-05-18 08:12:40
回答 2查看 1.1K关注 0票数 2

我试图在postgres_9数据库中创建以下函数:

代码语言:javascript
复制
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;

但我得到了以下错误:

代码语言:javascript
复制
ERROR: syntax error at or near "SELECT"

PS:我是Postgres数据库的新手。如果您有关于如何为Postgres数据库在plpgsql或SQL中创建函数和触发器的教程和书籍的良好资源,那就太好了!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-18 17:31:18

PostgreSQL有两种用于存储过程(函数)的默认语言: PLpgSQL和SQL。SQL是原始SQL。PLpgSQL是基于ADA的基于块结构的过程语言--块由关键字BEGIN、END来定义.您可以用这两种语言编写您的函数。您应该正确地指定语言。

代码语言:javascript
复制
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;

代码语言:javascript
复制
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,.关于参数。

票数 0
EN

Stack Overflow用户

发布于 2017-05-18 08:27:07

您能按照这个PostgreSQL9.1创建函数中的建议使用这种方法吗?

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44042130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档