Vous n'êtes pas identifié(e).
Pages : 1
Bonjour à toutes et à tous.
Je désire faire afficher une variable par une procédure. Voici le code :
CREATE OR REPLACE PROCEDURE s_ent.affiche_message ()
LANGUAGE plpgsql
AS $$
DECLARE
nom_table varchar(16) := 'ma_table';
cle_primaire varchar(8) := 'id';
suffixe varchar(8) := '.mat';
BEGIN
RAISE NOTICE 'Nom de la table: %', nom_table;
END;
$$
Rien ne s'affiche lors du
call s_ent.affiche_message();
Lors de la création de la procédure, aucun message d'erreur n'est envoyé.
Un merci anticipé à celle ou celui qui me dépannera.
Michel.
Hors ligne
Cela fonctionne comme attendu pour moi:
=# call affiche_message();
NOTICE: Nom de la table: ma_table
CALL
Peut être que votre client n'intercepte pas les message de type NOTICE?
Lors de la création de la procédure, aucun message d'erreur n'est envoyé.
C'est tout à fait normal, un RAISE NOTICE n'est qu'informatif, et le reste de la procédure ne devrait pas renvoyer d'erreur non plus.
Julien.
https://rjuju.github.io/
Hors ligne
Bonjour,
Aucun message d'erreur lors de la création de la procédure mais également aucun message que la procédure est bien créé.
N'est-ce pas ?
Il manque un ";" à la fin du code de la procédure.
exemple :
postgres=# CREATE OR REPLACE PROCEDURE affiche_message ()
postgres-# LANGUAGE plpgsql
postgres-# AS $$
postgres$# DECLARE
postgres$# nom_table varchar(16) := 'ma_table';
postgres$# cle_primaire varchar(8) := 'id';
postgres$# suffixe varchar(8) := '.mat';
postgres$# BEGIN
postgres$# RAISE NOTICE 'Nom de la table: %', nom_table;
postgres$# END;
postgres$# $$
postgres-# ;
CREATE PROCEDURE
postgres=#
postgres=#
postgres=#
postgres=#
postgres=#
postgres=# call affiche_message();
NOTICE: Nom de la table: ma_table
CALL
Cordialement,
Sébastien.
Hors ligne
Merci pour vos réponses.
Peut être que votre client n'intercepte pas les message de type NOTICE?
Je suis en localhost. Comment savoir si le client intercepte ou pas les messages de type NOTICE?
Aucun message d'erreur lors de la création de la procédure mais également aucun message que la procédure est bien créé.
Message renvoyé :
Pas de résultats.
Temps d'exécution total : 11.583 ms
Requête SQL exécutée.
Il manque un ";" à la fin du code de la procédure.
Le ";" a été rajouté.
Et toujours pas d'affichage. Si je passe la variable ma_table en paramètre à la procédure, la procédure l'affiche!
CREATE OR REPLACE PROCEDURE s_ent.display_message (INOUT msg TEXT)
LANGUAGE plpgsql
AS $$
BEGIN
RAISE NOTICE 'Paramètre de la procédure : %', msg ;
END;
$$;
Ce qui répond (?) à la remarque de rjuju.
Merci encore pour votre intérêt à mon problème.
Hors ligne
Comment savoir si le client intercepte ou pas les messages de type NOTICE?
J'imagine que cela doit être documenté quelque part sur la doc/site de votre client. Mais à priori le problème vient bien de votre client. Pouvez-vous vérifier que le message s'affiche bien si vous utilisez psql?
Julien.
https://rjuju.github.io/
Hors ligne
J'utilise postgresql 11.4 installé au moyen du stack de bitnami, pour le serveur, et phppgadmin pour le client. Le tout géré par le système d'exploitation W10.
Pouvez-vous vérifier que le message s'affiche bien si vous utilisez psql?
Les deux procédures, lancées dans psql, ont le même comportement que dans phppgadmin, c'est à dire affichage correct avec s_ent.display_message(msg) et pas d'affichage avec s_ent.affiche_message(). Je vais essayer d'utiliser display_message en testant la nullité de msg dans le corps de la procédure pour le constituer à ma guise dans ce cas.
Rendez-vous au prochain épisode, merci pour votre aide, Michel.
Dernière modification par Miflon (01/07/2021 13:18:20)
Hors ligne
Les deux procédures, lancées dans psql, ont le même comportement que dans phppgadmin, c'est à dire affichage correct avec s_ent.display_message(msg) et pas d'affichage avec s_ent.affiche_message()
Ah, dans ce cas cela pourrait aussi être lié à une configuration de votre serveur :
=# call display_message('a');
NOTICE: Paramètre de la procédure : a
msg
-----
a
(1 row)
=# set client_min_messages to warning ;
SET
=# call display_message('a');
msg
-----
a
(1 row)
Julien.
https://rjuju.github.io/
Hors ligne
Pages : 1