2010-10-15 4 views
1

Je suis assez nouveau à postgres. Je veux créer une fonction (comme une procédure stockée) qui met à jour plusieurs lignes et sélectionne les lignes affectées.Comment retourner les lignes mises à jour à partir de la fonction

voici ma déclaration:

CREATE or replace FUNCTION set_val( 
       _val character varying(100)) --5 
      RETURNS setof "table_test" AS 
$body$ 

declare results "table_test"%rowtype; 

begin 
    update "table_test" 
    set "value" = $1 
    where "gender" = 'm' 
    returning * into results; 

    if not found then 
     insert into "table_test"("value") 
     values($1) 
     returning * into results; 
    end if; 

    return next results; 
end;  

$body$ 
LANGUAGE 'plpgsql' ; 

cela fonctionne très bien tant que seulement 1 ligne a été affectée. mais quand plus de lignes sont affectées, ce n'est pas le cas.

Répondre

0

je l'ai finalement obtenu j'utilise pour la boucle avec le retour suivant. grâce

voici mon code

declare result table1%rowtype; 
begin 
for result in update table1 set ... where ... returning * loop 
    return next result; 
end loop; 
end; 
Questions connexes