PostgreSQL 9.4 - 语法错误处于或接近“IF” - 函数内部
问题描述:
我得到错误:语法错误位于或接近“IF”错误形式,示例代码如下。PostgreSQL 9.4 - 语法错误处于或接近“IF” - 函数内部
注:我没有替换查询以减轻复杂性。
CREATE OR REPLACE FUNCTION get_return_dev(
"Title" character varying,
"ID" character varying)
RETURNS x_returntype AS $$
select item from table1
IF NOT found THEN
select item from table2
END IF;
$$
任何建议都会有帮助!
答
您似乎对函数的语言感到困惑。您将函数结构化为SQL语言函数(没有BEGIN
\ END
语句),但您使用PL/pgSQL语言的元素。既然你明显需要PL/pgSQL(条件分支)的附加功能,我建议你从学习how a PL/pgSQL function is structured开始。
A SELECT
statement returning a single row PL/pgSQL函数的内部需要存储其结果的目标。
如果您需要return a result from a function,您需要在函数体内使用RETURN
语句。
CREATE OR REPLACE FUNCTION get_return_dev(
"Title" character varying,
"ID" character varying)
RETURNS x_returntype AS $$
DECLARE item_var same_type_as_item_column; return_var x_returntype; BEGIN
SELECT item INTO item_var FROM table1;
IF NOT found THEN
SELECT item INTO item_var FROM table2;
END IF;
-- Do your processing ... return_var := ...; RETURN return_var; END
$$LANGUAGE plpgsql;
+0
感谢您的帮助帕特里克。这对我行得通。 – develup
我期望'begin' /''end'块和'return'语句。 –
为什么不帮助那个在途中的家伙,而不是用一个新的用户来吓跑一个新的用户? – Patrick