2013-01-08 11 views
54

Voglio scrivere una funzione con pl/pgsql Sto usando PostgresEnterpreis Manager v3 e usare la shell per fare una funzione ma nella shell devo definire il tipo di ritorno. Se non definisco il tipo di ritorno, non sono in grado di creare una funzione.Come creare una funzione che non restituisce nulla

Come si può creare una funzione senza risultato di ritorno, ad esempio una funzione che crea una nuova tabella?

risposta

87

Usa RETURNS void come di seguito:

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

Per gli altri lettori, si noti che la direttiva '# variable_conflict' ha * niente * a che fare con il resto della risposta. Fa parte di una funzione di esempio; l'unico bit importante è il 'RETURNS void'. Inoltre, non sapevo che PL/PgSQL avesse praga. –

+0

Ecco un caso correlato facendo uso di '# variable_conflict': http://dba.stackexchange.com/a/105828/3684 –

Problemi correlati