Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 25/01/2010 15:21:27
- glenn
- Membre
Retour à la ligne RAISE INFO 'bla bla'
Bonjour,
Question bête ! Comment revenir à la ligne dans un message levé par RAISE ?
J'ai essayé :
CREATE OR REPLACE FUNCTION diff_tm_structure() RETURNS void AS $$
DECLARE
BEGIN
RAISE INFO 'première ligne\n';
RAISE INFO 'seconde ligne\n';
END;
$$ LANGUAGE plpgsql;
... mais toujours pas de retour à la ligne !
Merci par avance de votre aide !
Note : je suis en version 1.8.4.
J'ai vu le post sur le même sujetle post sur le même sujet mais la solution
RAISE INFO 'première ligne\n.';
si elle marche n'est pas satisfaisante car elle parasite la ligne suivante avec un caractère !
Glenn.
Dernière modification par glenn (25/01/2010 15:33:18)
Hors ligne
#2 25/01/2010 15:33:03
- Marc Cousin
- Membre
Re : Retour à la ligne RAISE INFO 'bla bla'
Ici ça marche, avec exactement votre code.
Par contre je présume que la version, c'est 8.4.1 ?
Marc.
Hors ligne
#3 25/01/2010 15:34:40
- glenn
- Membre
Re : Retour à la ligne RAISE INFO 'bla bla'
Oups ! la version est 8.3.5 !
Hors ligne
#4 25/01/2010 15:44:40
- Marc Cousin
- Membre
Re : Retour à la ligne RAISE INFO 'bla bla'
Essayez tout de même de remplacer 'première ligne\n' par E'première ligne\n', ceci précise à postgresql que la chaine entre parenthèses est une chaine définie avec la syntaxe d'escape C, et non la syntaxe SQL
Marc.
Hors ligne
#5 25/01/2010 15:47:15
- glenn
- Membre
Re : Retour à la ligne RAISE INFO 'bla bla'
ça ne marche pas non plus avec E...
Hors ligne
#6 25/01/2010 15:58:14
- Marc Cousin
- Membre
Re : Retour à la ligne RAISE INFO 'bla bla'
Ici ça marche :
test=# SET client_min_messages TO debug;
SET
test=# CREATE OR REPLACE FUNCTION diff_tm_structure() RETURNS void AS $$
DECLARE
BEGIN
RAISE INFO 'première ligne\n';
RAISE INFO 'seconde ligne\n';
END;
$$ LANGUAGE plpgsql;
WARNING: nonstandard use of escape in a string literal
HINT: Use the escape string syntax for escapes, e.g., E'\r\n'.
CONTEXT: string literal in PL/PgSQL function "diff_tm_structure" near line 3
WARNING: nonstandard use of escape in a string literal
HINT: Use the escape string syntax for escapes, e.g., E'\r\n'.
CONTEXT: string literal in PL/PgSQL function "diff_tm_structure" near line 4
CREATE FUNCTION
test=# SELECT diff_tm_structure();
INFO: première ligne
INFO: seconde ligne
diff_tm_structure
-------------------
Je suis en 8.4.2, et je n'ai pas de 8.3 sous la main pour tester pour le moment. Vous n'avez pas le même résultat ?
Marc.
Hors ligne
#7 25/01/2010 16:02:18
- glenn
- Membre
Re : Retour à la ligne RAISE INFO 'bla bla'
Non plus...
Merci bien pour ton aide. C'est sûrement dû à ma version... Je vais upgrader.
Hors ligne
#8 25/01/2010 16:43:08
- gleu
- Administrateur
Re : Retour à la ligne RAISE INFO 'bla bla'
Je ne vois pas où vous avez lu qu'il fallait un point supplémentaire pour que cela fonctionne. En fait, il vous faut remplacer le \n par un chr(10). Vous devez concaténer les chaînes mais RAISE utilise un moyen spécial pour cela (à la sprintf en C) :
a=# select version();
version
------------------------------------------------------------------------------------------
PostgreSQL 8.3.9 on i686-pc-linux-gnu, compiled by GCC gcc (Ubuntu 4.4.1-4ubuntu8) 4.4.1
(1 ligne)
a=# select diff_tm_structure();
INFO: première lignen
INFO: seconde lignen
diff_tm_structure
-------------------
(1 ligne)
a=# CREATE OR REPLACE FUNCTION diff_tm_structure() RETURNS void AS $$
DECLARE
BEGIN
RAISE INFO 'première ligne%', chr(10);
RAISE INFO 'seconde ligne%', chr(10);
END;
$$ LANGUAGE plpgsql;
CREATE FUNCTION
a=# select diff_tm_structure();
INFO: première ligne
INFO: seconde ligne
diff_tm_structure
-------------------
(1 ligne)
Guillaume.
Hors ligne
#9 25/01/2010 16:45:50
- glenn
- Membre
Re : Retour à la ligne RAISE INFO 'bla bla'
Ce n'est pas un "." en particulier qu'il faut mais un caractère, n'importe lequel après le \n...
J'ai testé ton exemple avec char(10), ça ne marche pas.
Hors ligne
Pages : 1