当前位置: 首页 > 面试题库 >

PostgreSQL IF-THEN-ELSE控制结构

欧阳鸿哲
2023-03-14
问题内容

为什么我总是从Postgres收到以下错误?

syntax error at or near "IF"

我阅读了PostgreSQL:文档:8.3:控制结构。首先,我尝试执行一个困难的查询(带有子查询),但是随后我尝试执行一个简单的查询,如下所示:

IF 2 <> 0 THEN select * from users; END IF;

错误仍然相同。我究竟做错了什么?


问题答案:
IF 2 <> 0 THEN select * from users; END IF;

您不能在plpgsql函数之外使用PL / pgSQL语句。而且,如果此片段来自plpgsql函数,那么它也是无稽之谈。您不能像T-
SQL一样直接返回查询结果。

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



 类似资料:
  • if-then语句后面可以跟一个可选的else语句,该语句在布尔表达式为false时执行。 语法 (Syntax) if-then-else语句的语法是 - if condition then S1 else S2; 其中, S1和S2是不同的陈述。 Please note that the statement S1 is not followed by a semicolon 。 在if-th

  • If语句后面可以跟一个可选的Else语句,该语句在布尔表达式为false时执行。 语法 (Syntax) VB.Net中If ... Then ... Else语句的语法如下 - If(boolean_expression)Then 'statement(s) will execute if the Boolean expression is true Else 'statement(

  • 除非后面的语句后面跟一个可选的else语句,该语句在布尔表达式为true时执行。 使用unless-then ... else语句,我们可以在一行中编写除非... else语句。 语法 (Syntax) 以下是CoffeeScript中的unless-then else语句的语法。 unless expression <b>then</b> Statements (for false) else

  • if-then语句后跟一个可选的else语句,该语句在布尔表达式为false时执行。 使用if-then ... else语句,我们可以在一行中编写if ... else语句。 语法 (Syntax) 以下是CoffeeScript中if-then...else语句的语法。 if expression <b>then</b> Statements (for true condition) else

  • if… then语句后面可以跟一个可选的else statement,该else statement,在逻辑表达式为false时执行。 语法 (Syntax)> if… then… else语句的基本语法是 - if (logical expression) then statement(s) else other_statement(s) end if 但是,如果给

  • if/then语句后面可以跟一个可选的else语句,该语句在布尔表达式为false时执行。 语法 (Syntax) F#编程语言中if/then/else语句的语法是 - if expr then expr else expr 流程图 (Flow Diagram) 例子 (Example) let a : int32 = 100 (* check the boolean condit