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
Mary-Kate Olsenoriginal
2024-12-24 21:18:35249parcourir

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;

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();

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)

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);

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;

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!

Déclaration:
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