Documentation PostgreSQL 8.0.2 | ||||
---|---|---|---|---|
Précédent | Arrière rapide | Chapitre 37. PL/Perl - Le langage de procédures Perl | Avance rapide | Suivant |
Vous pouvez utiliser le hachage global %_SHARED pour stocker les données, incluant les références de code, entre les appels de fonction pour la durée de vie de la session en cours.
Voici un exemple simple pour des données partagées :
CREATE OR REPLACE FUNCTION set_var(name text, val text) RETURNS text AS $$ if ($_SHARED{$_[0]} = $_[1]) { return 'ok'; } else { return "Ne peux pas initialiser la variable partagée $_[0] à $_[1]"; } $$ LANGUAGE plperl; CREATE OR REPLACE FUNCTION get_var(name text) RETURNS text AS $$ return $_SHARED{$_[0]}; $$ LANGUAGE plperl; SELECT set_var('sample', 'Bonjour, PL/Perl ! Comment va ?'); SELECT get_var('sample');
Voici un exemple légèrement plus compliqué utilisant une référence de code :
CREATE OR REPLACE FUNCTION myfuncs() RETURNS void AS $$ $_SHARED{myquote} = sub { my $arg = shift; $arg =~ s/(['\\])/\\$1/g; return "'$arg'"; }; $$ LANGUAGE plperl; SELECT myfuncs(); /* initialise la fonction */ /* Set up a function that uses the quote function */ CREATE OR REPLACE FUNCTION use_quote(TEXT) RETURNS text AS $$ my $text_to_quote = shift; my $qfunc = $_SHARED{myquote}; return &$qfunc($text_to_quote); $$ LANGUAGE plperl;
(Vous pourriez avoir remplacé le code ci-dessus avec la seule ligne return $_SHARED{myquote}->($_[0]); au prix d'une mauvaise lisibilité.)
Précédent | Sommaire | Suivant |
Valeurs des données dans PL/Perl | Niveau supérieur | Niveaux de confiance de PL/Perl |