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; 
$$ 

任何建议都会有帮助!

+0

我期望'begin' /''end'块和'return'语句。 –

+0

为什么不帮助那个在途中的家伙,而不是用一个新的用户来吓跑一个新的用户? – Patrick

您似乎对函数的语言感到困惑。您将函数结构化为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