6
votes

Les fonctions stockées Postgres peuvent-elles avoir une valeur de retour et des paramètres Out?

Je connais Oracle et PL / SQL

Par rapport à ce que je sais sur Oracle Pl / SQL, je ne connais pas très bien les procédures stockées et PLPGSQL de PostgreSQL. À Oracle, il existe deux types d'appelables:

  • procédures. Ils peuvent avoir dans , out> et dans les paramètres hors , mais aucune valeur de retour
  • fonctionne. Ils peuvent avoir dans , out> et dans les paramètres x / forts> et ils doivent renvoyer une valeur

    Mais je suis nouveau à PLPGSQL

    Je comprends que dans PLPGSQL, toutes les procédures stockées sont considérées comme des fonctions . À ma compréhension, cela signifie qu'ils peuvent (mais ne pas avoir à) retourner toujours une valeur. Maintenant, je vois sur le page de documentation , que je peux aussi Déclarez OUT Paramètres sur les fonctions , une chose qui n'est pas possible dans Oracle . Mais je ne vois pas d'exemple ou d'une déclaration claire sur le fait de savoir si les paramètres OUT peuvent être combinés avec des valeurs de retour. Je ne vois pas non plus si les paramètres sous sont possibles.

    Voici mes questions:
    • PLPGSQL autorise dans les paramètres ?
    • PLPGSQL autorise-t-il des paramètres OUT à combiner avec les valeurs de retour? Est-ce une pratique courante? Avez-vous des exemples pour cela?


0 commentaires

3 Réponses :


2
votes

... En fait, j'aurais dû rechercher un peu plus moi-même. La réponse n'est pas loin sur la page Documentations:

http://www.postgresql.org/docs/current/ statique / sql-createfuncer.html


0 commentaires

14
votes

IN et OUT sont essentiellement des alias pour la syntaxe plus ancienne.

Analday: P>

create or replace function test(in a int) 
returns record as 
as $$ select 1, 2 $$ 
language sql;
                                ^
select * from test(1);
ERROR:  a column definition list is required 
   for functions returning "record"


1 commentaires

+1 pour l'explication très intéressante, merci! On dirait que les gens postgres ont fait des fonctions très faciles à utiliser et très utiles, aussi!



0
votes

Si vous avez spécifié le paramètre, cela signifie une structure de votre résultat

par exemple. p> xxx pré>

retournera 2 colonnes d'int. Dans Postgre Jusqu'à présent, je sais 2 moyen de le faire. P>

1 Retour Setof Refcursor et utilisez l'application pour la lire. P>

raise notice 'my parameter = %', 11;
return query select * from mytable;


0 commentaires