L3 Info : SGBD
 
◃  Ch. 10 PL/pgSQL  ▹
 

Fonctions tables (en SQL)

  • Il est possible de définir des fonctions dont le résultat correspond à un ensemble de lignes provenant d'une table ou d'une vue.
  • Le type de retour de ces fonctions est SETOF nomTable.
  • Exemple :
    create FUNCTION selectTitres(varchar) RETURNS SETOF livre AS $$
        SELECT * FROM livre WHERE liv_titre like $1;
    $$ LANGUAGE SQL;
    
    SELECT * FROM selectTitres('Les %') AS t1;
    
  • Elles s'utilisent ensuite comme des tables ou des vues.
  • Il est également possible de retourner une table créée dynamiquement avec le type de retour TABLE(cols)
  • Exemple :
    CREATE OR REPLACE FUNCTION selectTitres(debut int, fin int)
              RETURNS TABLE(numero int, titre VARCHAR) AS $$
        SELECT liv_num, liv_titre FROM livre WHERE liv_num BETWEEN $1 AND $2;
    $$ LANGUAGE SQL;
    
    SELECT * FROM selectTitres(1,5) AS t1;