Comment affecter le résultat d'une requête à une variable dans PL / pgSQL, le langage procédural de PostgreSQL?
J'ai une fonction:
CREATE OR REPLACE FUNCTION test(x numeric)
RETURNS character varying AS
$BODY$
DECLARE
name character varying(255);
begin
name ='SELECT name FROM test_table where id='||x;
if(name='test')then
--do somthing
else
--do the else part
end if;
end;
return -- return my process result here
$BODY$
LANGUAGE plpgsql VOLATILE
Dans la fonction ci-dessus, j'ai besoin de stocker le résultat de cette requête:
'SELECT name FROM test_table where id='||x;
à la variable name
.
Comment traiter cela?
SELECT test_table.column1, test_table.column2 INTO variable1, variable2 FROM test_table WHERE id = x;
Tant que vous affectez une seule variable, vous pouvez également utiliser une affectation simple dans une fonction plpgsql:
Ou utilisez
SELECT INTO
comme @mu déjà fourni .Cela fonctionne aussi:
Mais mieux vaut utiliser l'une des deux premières méthodes plus claires, comme l'a commenté @Pavel.
J'ai raccourci la syntaxe avec un alias de table en plus.
Mise à jour: J'ai supprimé mon exemple de code et suggère de l'utiliser à la
IF EXISTS()
place comme fourni par @Pavel .la source
Le modèle habituel est
EXISTS(subselect)
:Ce modèle est utilisé en PL / SQL, PL / pgSQL, SQL / PSM, ...
la source
Démo:
la source
Vous pouvez utiliser l'exemple suivant pour stocker un résultat de requête dans une variable à l'aide de PL / pgSQL:
la source