Maison > base de données > tutoriel mysql > Comment puis-je créer une fonction Postgres qui renvoie une table virtuelle ?

Comment puis-je créer une fonction Postgres qui renvoie une table virtuelle ?

Linda Hamilton
Libérer: 2025-01-04 04:20:39
original
219 Les gens l'ont consulté

How Can I Create a Postgres Function That Returns a Virtual Table?

Renvoi de tables virtuelles à partir de fonctions dans Postgres

On peut créer une fonction Postgres qui renvoie une table virtuelle avec un schéma personnalisé. Ce type de structure de table se compose d'un nombre distinct de colonnes et de lignes.

Syntaxe de fonction PL/pgSQL

Pour les versions PL/pgSQL modernes (PostgreSQL 8.4 et supérieures) , voici la syntaxe :

CREATE OR REPLACE FUNCTION function_name()
  RETURNS TABLE (column1 data_type, column2 data_type, column3 data_type) AS
$func$
BEGIN
  RETURN QUERY VALUES
  (value1, value2, value3),
  (value4, value5, value6);

END;
$func$  LANGUAGE plpgsql IMMUTABLE ROWS number_of_rows;
Copier après la connexion

Important Points :

  • Utilisez RETURNS TABLE pour spécifier le type de ligne personnalisé.
  • Utilisez RETURN QUERY VALUES pour remplir le tableau.
  • Utilisez VALUES pour insérer plusieurs lignes manuellement.
  • Ajustez le nombre_de_lignes en fonction du tableau connu size.
  • Supprimez les guillemets doubles des identifiants légaux, sauf cas particuliers.
  • Définissez la volatilité sur IMMUTABLE si le résultat ne change jamais.

Fonction SQL Syntaxe

Pour les cas simples, utilisez cette fonction SQL :

CREATE OR REPLACE FUNCTION function_name()
RETURNS TABLE (column1 data_type, column2 data_type, column3 data_type) AS
$func$
SELECT *
FROM (
  VALUES
    (value1, value2, value3),
    (value4, value5, value6)
) AS table_name(column1, column2, column3);

$func$  LANGUAGE sql IMMUTABLE ROWS number_of_rows;
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!

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