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毫无意义。 |
|
|
|
|
|