回答

收藏

PostgreSQL IF-THEN-ELSE控制结构

技术问答 技术问答 236 人阅读 | 0 人回复 | 2023-09-14

为什么我总是从Postgres收到以下错误?
3 p1 ?) e4 f$ c. R- R% B& p  Ssyntax error at or near "IF"& U6 S  V% ]$ g
我阅读了PostgreSQL:文档:8.3:控制结构。首先,我试图执行一个困难的查询(带子查询),但然后我试图执行一个简单的查询,如下所示:" n# u4 \, w. r0 a0 w; D  B9 s% |8 ?1 l
IF 2  0 THEN select * from users; END IF;错误还是一样的。我做错了什么?
# o1 F, X5 _1 q& b; ~: O                                                                - Y7 c, y& l% u' Q
    解决方案:                                                                1 q9 I+ e5 u- o& T
                                                                IF 2  0 THEN select * from users; END IF;您不能在plpgsql除函数外使用PL / pgSQL语句。而且,如果这个片段来自plpgsql函数,那么也是无稽之谈。你不能像。T-
3 R$ Q7 v  h0 h/ U8 ?, R6 sSQL直接返回查询结果。$ M* t5 J7 \7 D" j5 @1 t2 S, ]
CREATE OR REPLACE FUNCTION test(p int)RETURNS SETOF users AS $$BEGIN  IF p = 1 THEN    RETURN QUERY SELECT * FROM users;  END IF;  RETURN;END;$$ LANGUAGE plpgsql;当你从函数中得到一些结果时,你必须使用它们RETURN语句-plpgsql只知道函数,不支持过程-因此,无限制SELECT毫无意义。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则