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 : Sélectionner tout - Visualiser dans une fenêtre à part var1 VARCHAR2 (512);
il n'y aucun problème.
Code : Sélectionner tout - Visualiser dans une fenêtre à part select fonction(parametres) from dual
Par contre, quand cette fonction est appelée par un autre programme ca ne marche plus,
et tout ce que j'ai comme message c'est un laconique
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 chaine_exec_imm := 'select a, b, '||fonction(params)||' from machin'; DBMS_OUTPUT.PUT_LINE (chaine_exec_imm);
En fait ce que j'essaye de faire c'est construire une chaine de charactere que je vais utiliser plus tard dans execute immediate.begin dbms_output.get_line(:ln,:st); end;
Error at line 4
PL/SQL procedure successfully completed.
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
Partager