Maison > base de données > tutoriel mysql > Comment renvoyer une table virtuelle à partir d'une fonction Postgres ?

Comment renvoyer une table virtuelle à partir d'une fonction Postgres ?

Mary-Kate Olsen
Libérer: 2024-12-27 10:28:10
original
795 Les gens l'ont consulté

How to Return a Virtual Table from a Postgres Function?

Renvoi d'une table virtuelle à partir d'une fonction dans Postgres

Dans Postgres, la création d'une table virtuelle personnalisée avec plusieurs lignes et colonnes à l'aide d'une fonction nécessite un syntaxe. Cet article montre comment écrire correctement une fonction qui renvoie un ensemble d'enregistrements ressemblant à une table virtuelle.

Syntaxe correcte

Pour définir une fonction qui renvoie une table virtuelle avec trois colonnes entières, utilisez le PL/pgSQL suivant code :

CREATE OR REPLACE FUNCTION f_foo()
  RETURNS TABLE (a int, b int, c int) AS
$func$
BEGIN
RETURN QUERY VALUES
  (1,2,3)
, (3,4,5)
, (3,4,5)
;
END
$func$  LANGUAGE plpgsql IMMUTABLE ROWS 3;
Copier après la connexion

Explication

  • TABLE DES RETOURS : Indique que la fonction renverra un type de ligne ad hoc.
  • RENVOYER LES VALEURS DE REQUÊTE : Utilisé pour renvoyer plusieurs lignes à l'aide de l'expression VALUES.
  • ROWS 3 : Déclare le nombre de lignes renvoyées, aidant ainsi le planificateur de requêtes à optimiser l'exécution.
  • IMMUTABLE : Spécifie que le résultat ne change jamais, permettant ainsi la performance optimisation.

Options alternatives

SQL simple : Pour des scénarios simples, une simple instruction SQL peut suffire :

VALUES (1,2,3), (3,4,5), (3,4,5)
Copier après la connexion

Fonction SQL : Vous pouvez également envelopper l'instruction ci-dessus dans un SQL fonction :

CREATE OR REPLACE FUNCTION f_foo()
   RETURNS TABLE (a int, b int, c int) AS
$func$
   VALUES (1, 2, 3)
        , (3, 4, 5)
        , (3, 4, 5);
$func$  LANGUAGE sql IMMUTABLE ROWS 3;
Copier après la connexion

Utilisation

Pour récupérer la table virtuelle :

SELECT * FROM f_foo();
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal