Maison > base de données > tutoriel mysql > Comment créer des tables virtuelles dans PostgreSQL à l'aide de « setof record » ?

Comment créer des tables virtuelles dans PostgreSQL à l'aide de « setof record » ?

Mary-Kate Olsen
Libérer: 2024-12-24 21:18:35
original
144 Les gens l'ont consulté

How to Create Virtual Tables in PostgreSQL using `setof record`?

Création de tables virtuelles avec un jeu d'enregistrements dans PostgreSQL

Cet article aborde la création de tables virtuelles à l'aide de l'approche de jeu d'enregistrements dans PostgreSQL. Une table virtuelle ne possède pas son propre stockage de données sous-jacent ; il s'agit plutôt d'une représentation temporaire de données basée sur des paramètres ou des calculs transmis.

Pour créer une table virtuelle qui renvoie trois colonnes et un nombre inconnu de lignes, utilisez la fonction PL/pgSQL suivante :

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

Cette fonction utilise la clause RETURNS TABLE pour définir le type de ligne renvoyé par la fonction. La commande RETURN QUERY génère plusieurs lignes à l'aide d'une expression VALUES. Les clauses IMMUTABLE et ROWS 3 optimisent les performances de la fonction.

Pour invoquer la table virtuelle, appelez simplement la fonction :

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

De plus, vous pouvez construire des tables virtuelles à l'aide d'une simple instruction SQL. :

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

Pour les cas plus complexes, définissez les noms et types de colonnes :

SELECT *
FROM  (
   VALUES (1::int, 2::int, 3::int)
        , (3, 4, 5)
        , (3, 4, 5)
   ) AS t(a, b, c);
Copier après la connexion

Enfin, encapsuler la création de tables virtuelles dans une fonction SQL :

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

En mettant en œuvre ces approches, vous pouvez créer efficacement des tables virtuelles dans PostgreSQL, permettant ainsi la flexibilité et la personnalisation du traitement des données.

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!

source:php.cn
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