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

Comment créer et renvoyer une table virtuelle à partir d'une fonction PostgreSQL ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-27 08:33:10377parcourir

How to Create and Return a Virtual Table from a PostgreSQL Function?

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

Dans Postgres, la création d'une table virtuelle (similaire aux tables virtuelles d'Oracle) peut être réalisée en utilisant une fonction. Cette fonction vous permet de renvoyer un tableau personnalisé avec une structure et un contenu définis.

Syntaxe correcte

Voici la syntaxe corrigée pour la fonction que vous avez fournie :

CREATE OR REPLACE FUNCTION "public"."storeopeninghours_tostring" (open_id numeric)
  RETURNS TABLE (a int, b int, c int) AS
DECLARE
  returnrecords RECORD;
BEGIN
  INSERT INTO returnrecords(a, b, c) VALUES (1, 2, 3);
  INSERT INTO returnrecords(a, b, c) VALUES (3, 4, 5);
  INSERT INTO returnrecords(a, b, c) VALUES (3, 4, 5);
  RETURN TABLE returnrecords;
END;

Clé Points

  • RETURNS TABLE : Spécifie le type de données de la table virtuelle. Dans ce cas, il s'agit d'une table avec trois colonnes entières nommées a, b et c.
  • INSERT : utilisez les instructions INSERT pour remplir la table virtuelle avec des données.
  • RETURN TABLE : utilisez RETURN TABLE pour renvoyer la table virtuelle du function.

Appel de la fonction

Vous pouvez maintenant appeler la fonction pour obtenir la table virtuelle :

SELECT * FROM "public"."storeopeninghours_tostring"(<open_id>);

Syntaxe alternative

Dans Postgres 8.4 ou version ultérieure, vous pouvez également utiliser ce qui suit Syntaxe PL/pgSQL :

CREATE OR REPLACE FUNCTION f_foo()
  RETURNS TABLE (a int, b int, c int) AS $$
BEGIN
  RETURN QUERY VALUES
    (1, 2, 3),
    (3, 4, 5),
    (3, 4, 5);
END;
$$ LANGUAGE plpgsql;

Solution SQL simple

Pour un cas simple comme celui-ci, vous pouvez également utiliser une simple instruction SQL :

VALUES (1, 2, 3), (3, 4, 5), (3, 4, 5)

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