Elk*_*kan 10 sql postgresql plpgsql
为什么我总是从Postgres得到以下错误?
syntax error at or near "IF"
我读了PostgreSQL:文档:8.3:控制结构.首先,我尝试执行一个困难的查询(使用子查询),但后来我尝试执行一个这样的简单查询:
IF 2 <> 0 THEN select * from users; END IF;
Run Code Online (Sandbox Code Playgroud)
错误仍然是一样的.我究竟做错了什么?
Pav*_*ule 18
IF 2 <> 0 THEN select * from users; END IF;
Run Code Online (Sandbox Code Playgroud)
您不能在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;
Run Code Online (Sandbox Code Playgroud)
当你从函数中得到一些结果时,你必须使用RETURN语句 - plpgsql只知道函数,它不支持程序 - 所以无限制的SELECT没有意义.