Vous n'êtes pas identifié(e).
Pages : 1
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
Ici ça marche, avec exactement votre code.
Par contre je présume que la version, c'est 8.4.1 ?
Marc.
Hors ligne
Oups ! la version est 8.3.5 !
Hors ligne
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
ça ne marche pas non plus avec E...
Hors ligne
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
Non plus...
Merci bien pour ton aide. C'est sûrement dû à ma version... Je vais upgrader.
Hors ligne
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
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