2016-07-07 72 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_返回查詢結果(如我的答案中的示例所示) –

相關問題