Précédent   Forum des professionnels en informatique > Bases de données > Oracle > PL/SQL
PL/SQL Forum d'entraide sur le PL/SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/12/2011, 10h49   #1
Candidat au titre de Membre du Club
 
Inscription : mars 2006
Messages : 87
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 87
Points : 13
Points : 13
Par défaut Taille insuffisante pour varchar2 retourné par une fonction

Bonjour,

J'ai fait un petit programme qui retourne un varchar2 que j'ai déclaré comme tel:
Lorsque j'execute cette fonction "toute seule", c'est à dire que je fais
Code :
SELECT fonction(parametres) FROM dual
il n'y aucun problème.
Par contre, quand cette fonction est appelée par un autre programme ca ne marche plus,
Code :
1
2
chaine_exec_imm := 'select a, b, '||fonction(params)||' from machin';
DBMS_OUTPUT.PUT_LINE (chaine_exec_imm);
et tout ce que j'ai comme message c'est un laconique
Citation:
begin dbms_output.get_line(:ln,:st); end;
Error at line 4
PL/SQL procedure successfully completed.
En fait ce que j'essaye de faire c'est construire une chaine de charactere que je vais utiliser plus tard dans execute immediate.

En bidouillant un peu je me suis rendu compte que le probleme vient de la taille de la chaine de charactere retournée par Fonction. En effet, si fonction retourne simplement 'toto', ca marche! Si elle retourne un 'totototototototot....' suffisament long, eh ben ca marche pu!
Evidemment, chaine_exec_imm est déclarée avec une taille suffisament grande.
NB:
Oracle client (sur mon poste): 8.0.6
Oracle Server : 10.2.0.1
abdelhamidem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 10h57   #2
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 440
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 440
Points : 4 183
Points : 4 183
dbms_output est limité à 255 caractères jusqu'à la 9i

Code :
1
2
3
4
5
6
7
8
9
 
BEGIN
dbms_output.put_line(LPAD('k', 256, 'j'));
END;
 
ORA-20000: ORU-10028: line length overflow, LIMIT of 255 chars per line
ORA-06512: at "SYS.DBMS_OUTPUT", line 35
ORA-06512: at "SYS.DBMS_OUTPUT", line 133
ORA-06512: at line 2
__________________
More Code : More Bugs. Less Code : Less Bugs
McM est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 21/12/2011, 11h27   #3
Candidat au titre de Membre du Club
 
Inscription : mars 2006
Messages : 87
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 87
Points : 13
Points : 13
Citation:
Envoyé par McM Voir le message
dbms_output est limité à 255 caractères jusqu'à la 9i

Code :
1
2
3
4
5
6
7
8
9
 
BEGIN
dbms_output.put_line(LPAD('k', 256, 'j'));
END;
 
ORA-20000: ORU-10028: line length overflow, LIMIT of 255 chars per line
ORA-06512: at "SYS.DBMS_OUTPUT", line 35
ORA-06512: at "SYS.DBMS_OUTPUT", line 133
ORA-06512: at line 2
Donc la version client sur mon PC fait goulot d'étranglement ...?
Merci pour ta réponse!
abdelhamidem est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h35.


 
 
 
 
Partenaires

Hébergement Web