2016-07-07 121 views
1
CREATE OR REPLACE FUNCTION udf_get_emp_name(p_empcode integer) 
returns text 
AS 
$BODY$ 

    DECLARE l_emp_name TEXT; 
    select emp_name into l_emp_name from employee where empcode = p_empcode; 

    return l_emp_name; 
END; 

$BODY$ 
    LANGUAGE plpgsql VOLATILE 
    COST 100; 

该函数成功创建,postgresql不检查表是否存在或存在列。是否有任何选项可以检查列名和表名是否正确并存在于CREATE或REPLACE FUNCTION时Postgresql -CREATE FUNCTION

回答

3

您不需要PL/pgSQL。如果您是一个普通的sql功能,Postgres的检查表的存在和语法嵌入式SQL语句:

CREATE OR REPLACE FUNCTION udf_get_emp_name(p_empcode integer) 
returns text 
AS 
$BODY$ 
    select emp_name 
    from employee 
    where empcode = p_empcode; 
$BODY$ 
    LANGUAGE sql VOLATILE 
    COST 100; 

然而,如果你简化你的榜样,你真正需要的PL/pgSQL里,那么您可以使用扩展PL/pgSQL Check(或PL/pgSQL Lint)来验证PL/pgSQL函数中的SQL代码。

+0

感谢您的回复。但是,如果我使用SQL,那么我无法返回查询选项。 –

+0

@SayeekrishnanSubramaniam:SQL函数_can_返回查询结果(如我的答案中的示例所示) –

相关问题