postgresql中使用if else语句

来源:百度知道 编辑:UC知道 时间:2024/06/08 10:40:20
如何在postgresql中使用if then else语句。
从postgresql8.3的官方发行文档有以下说明:
38.6.2. Conditionals
IF statements let you execute commands based on certain conditions. PL/pgSQL has five forms of IF:

IF ... THEN

IF ... THEN ... ELSE

IF ... THEN ... ELSE IF

IF ... THEN ... ELSIF ... THEN ... ELSE

IF ... THEN ... ELSEIF ... THEN ... ELSE

38.6.2.1. IF-THEN
IF boolean-expression THEN
statements
END IF;
但是,在使用中,即使最简单的
if true then select now() end if
都不可以使用。请问这是为什么呢?要安装什么扩展程序才能使用吗?

首先确定你是在基于pgsql的function里面使用的这些句子,这是个完整的sql执行会产生一个function
CREATE OR REPLACE FUNCTION test()
RETURNS void AS
$BODY$
BEGIN
if true then
perform (select now());
end if;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100;

注意,postgresql 中,对于select要不用perform函数来执行一个忽略结果的查询,要不用select in取得select函数,而不允许select语句直接出现在函数体重

如果要取得select now()的内容则可以这样写
CREATE OR REPLACE FUNCTION testwm()
RETURNS timestamp AS
$BODY$
DECLARE
nowtime timestamp;
BEGIN
if true then
select now() into nowtime;
end if;
return nowtime;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100;

这个函数返回select 的now()的结果