2012-05-14 11 views
11

Sto provando a recuperare valori da una funzione plpgsql con 2 parametri OUT ma ho qualche problema.plpgsql: chiama una funzione con 2 parametri OUT

Queste sono le funzioni:

CREATE OR REPLACE FUNCTION get_test(OUT x text, OUT y text) 
AS $$ 
BEGIN 
    x := 1; 
    y := 2; 
END; 
$$ LANGUAGE plpgsql; 
---------------------------------------------------------------- 

CREATE OR REPLACE FUNCTION get_test_read() 
RETURNS VOID AS $$ 
DECLARE 
    xx text; 
    yy text; 
BEGIN 

    SELECT get_test() INTO xx, yy; 

    RAISE INFO 'x: <%>', xx; 
    RAISE INFO 'y: <%>', yy; 

END; 
$$ LANGUAGE plpgsql; 

L'output del comando:

selezionare get_test_read();

INFORMAZIONI: x: < (1,2)

INFORMAZIONI: y: <>

get_test_read


Così sia i valori vanno al primo parametro. Non riesco a trovare qualche esempio su come chiamare una funzione come questa.

risposta

23

Come si hanno 2 parametri OUT, la funzione restituirà un record.

Al fine di ottenere tutti i valori si dovrebbe usare la funzione come fonte dei dati e metterlo nella clausola FROM in questo modo:

SELECT * FROM get_test() INTO xx, yy; 
+0

Ok, abbastanza facile, grazie :) – marco

+0

Siamo spiacenti, ho dimenticato di accetta la risposta – marco

Problemi correlati