2013-01-08 74 views
54

我想用pl/pgsql編寫函數我正在使用PostgresEnterpreis Manager v3並使用shell創建函數,但在shell中我必須定義返回類型。如果我不定義返回類型,我不能創建一個函數。如何創建無返回值的函數

如何創建一個沒有返回結果的函數,即創建一個新表的函數?

回答

87

使用RETURNS void象下面這樣:

CREATE FUNCTION stamp_user(id int, comment text) RETURNS void AS $$ 
    #variable_conflict use_variable 
    DECLARE 
     curtime timestamp := now(); 
    BEGIN 
     UPDATE users SET last_modified = curtime, comment = comment 
      WHERE users.id = id; 
    END; 
$$ LANGUAGE plpgsql; 
+10

對於其他讀者,請注意'#variable_conflict'指令有*不*做答案的其餘部分。它只是示例函數的一部分;唯一重要的是'RETURNS void'。另外,很酷,我不知道PL/PgSQL有編譯指示。 –

+0

下面是一個使用'#variable_conflict'的相關案例:http://dba.stackexchange.com/a/105828/3684 –