Sélectionnez à partir d'une variable de table
Je suis en train d'enregistrer le résultat d'un SELECT
requête, le passer et de le réutiliser dans un autre fonctions PL/pgSQL:
DECLARE
table_holder my_table; --the type of table_holder is my_table;
result text;
BEGIN
SELECT * INTO table_holder FROM table_holder ;
result = another_function(table_holder);
return result;
END
Le code pour another_function(table_holder my_table)
, respectivement:
BEGIN
RETURN QUERY
SELECT col FROM table_holder where id = 1;
END
Est-il possible d'exécuter un SELECT
requête dans une variable? Si non, est-il un moyen de contourner cette limitation?
Je suis en utilisant PostgreSQL 9.2.
Vous avez déjà thevalue dans la grandeur. Quoi d'autre voulez-vous sélectionner ?
Je veux passer cette variable à une autre fonction.
Je veux passer cette variable à une autre fonction.
OriginalL'auteur Xin | 2013-07-26
Vous devez vous connecter pour publier un commentaire.
Il n'y a pas de tableau "variables" en plpgsql. C'est quelque chose que vous trouverez dans SQL Server.
Utiliser un table temporaire à la place:
Une table temporaire existe que pour la durée de vie d'une session. Le laisser tomber à la fin de la fonction (ou d'une transaction jointe) utiliser automatiquement
ON COMMIT DROP
dans la création d'instruction.La table temporaire est automatiquement visible de toute autre fonction dans la même session (ou de la transaction, respectivement).
Une alternative serait d'utiliser curseurs en plpgsql, comme décrit dans le manuel ici.
SELECT
à partir d'un autre directement.Temp tables de vivre jusqu'à la fin de la session (et pas seulement de la transaction) par défaut.
Oui, à moins que
ON COMMIT DROP
, comme vous l'avez utilisé ci-dessus. Je devrais l'ai mentionné explicitement.OriginalL'auteur Erwin Brandstetter