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 28/09/2011, 16h42   #1
Futur Membre du Club
 
Inscription : septembre 2011
Messages : 51
Détails du profil
Informations forums :
Inscription : septembre 2011
Messages : 51
Points : 15
Points : 15
Par défaut Problème avec dbms_output.put_line

Bonjour,

Je n'arrive plus à afficher la valeur de mes variables pour mes tests avec cette méthode :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
DECLARE 
   var1 varchar2(300);
   var2 varchar2(300);
BEGIN
   SELECT max(col1) INTO var1 FROM table1;
 
   var2 := 'insert into table2 (select c1 from table2)';
 
  dbms_output.new_line;
  dbms_output.put_line('var1 : ', var1, ' var2 : ', var2);
 
   execute immediate var2
END;
J'obtiens toujours 'anonymous block completed' mais rien ne s'affiche. J'ai essayé avec en activant :
Code :
1
2
SET serveroutput ON;
SET feedback 0;
Si vous avez d'autre proposition, je suis preneur.
alex_972 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2011, 16h51   #2
Membre confirmé
 
Homme Grégoire MARTIN
Ingénieur développement logiciels
Inscription : janvier 2011
Messages : 128
Détails du profil
Informations personnelles :
Nom : Homme Grégoire MARTIN
Âge : 32
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Finance

Informations forums :
Inscription : janvier 2011
Messages : 128
Points : 225
Points : 225
Bonjour,

Essaie tout simplement :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
DECLARE 
   var1 varchar2(300);
   var2 varchar2(300);
BEGIN
   SELECT max(col1) INTO var1 FROM table1;
 
   var2 := 'insert into table2 (select c1 from table2)';
--  dbms_output.new_line;
--  dbms_output.put_line('var1 : ', var1, ' var2 : ', var2);
dbms_output.put_line('var1 : ' || var1 ||','|| ' var2 : '|| var2);
 
   execute immediate var2
END;
__________________
Cordialement.
ORA-007 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2011, 16h56   #3
Futur Membre du Club
 
Inscription : septembre 2011
Messages : 51
Détails du profil
Informations forums :
Inscription : septembre 2011
Messages : 51
Points : 15
Points : 15
Désolé, j'ai mal recopié. J'ai bien des || à la place des virgules.
alex_972 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2011, 16h59   #4
Membre confirmé
 
Homme Grégoire MARTIN
Ingénieur développement logiciels
Inscription : janvier 2011
Messages : 128
Détails du profil
Informations personnelles :
Nom : Homme Grégoire MARTIN
Âge : 32
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Finance

Informations forums :
Inscription : janvier 2011
Messages : 128
Points : 225
Points : 225
Bonjour,

Chez moi ça marche .

Donc cela vient peut etre de ton client, TOAD me faisait ça de temps en temps ...

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
SQL> SET serveroutput ON;
SQL> 
SQL> DECLARE
  2     var1 varchar2(300);
  3     var2 varchar2(300);
  4  BEGIN
  5     SELECT 1 INTO var1 FROM dual;
  6  
  7     var2 := 'insert into table2 (select c1 from table2)';
  8  
  9    dbms_output.put_line('var1 : ' || var1 ||','|| ' var2 : '|| var2);
 10  
 11     --execute immediate var2
 12  END;
 13  /
 
var1 : 1, var2 : INSERT INTO table2 (SELECT c1 FROM table2)
 
PL/SQL procedure successfully completed
__________________
Cordialement.
ORA-007 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2011, 17h19   #5
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
T'es sur que la chaine complète ne dépasse pas les 255 caractère autorisés par le dbms_output ?
__________________
More Code : More Bugs. Less Code : Less Bugs
McM est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 28/09/2011, 17h38   #6
Futur Membre du Club
 
Inscription : août 2009
Messages : 22
Détails du profil
Informations forums :
Inscription : août 2009
Messages : 22
Points : 15
Points : 15
Envoyer un message via Yahoo à dramanebox Envoyer un message via Skype™ à dramanebox
Par défaut Un petit éclairage

Lacune dans var2...
Code :
1
2
3
4
5
6
7
8
9
10
 
DECLARE 
   var1 varchar2(300);
   var2 varchar2(300);
BEGIN
   SELECT max(col1) INTO var1 FROM table1;
 
   var2 := 'insert into table2 (select c1 from table2)';
...
...
Déjà, ce code DML n'est pas correct, pas besoin de '( )' pour "select c1...".

A la suite je propose d'exécuter ceci voire
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
DECLARE 
   var1 varchar2(300);
   var2 varchar2(300);
BEGIN
-->> Fetch var1
BEGIN
   SELECT max(col1) INTO var1 FROM table1;
EXCEPTION
 WHEN NO_DATA_FOUND
  THEN
   var1:='';
END;
-->>Initialise var2
   var2 := 'insert into table2 select c1 from table2';
-->> DML execution (var2)
  execute immediate var2;
-->> Output variables var1 and var2
  dbms_output.put_line('var1 : '||var1||','||'var2 : '||','||var2);  
END;
J'espère que ça fera effet
dramanebox est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 28/09/2011, 17h45   #7
Membre expérimenté
 
François
Inscription : février 2010
Messages : 306
Détails du profil
Informations personnelles :
Nom : François

Informations forums :
Inscription : février 2010
Messages : 306
Points : 536
Points : 536
Citation:
Envoyé par McM Voir le message
T'es sur que la chaine complète ne dépasse pas les 255 caractère autorisés par le dbms_output ?
?

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
TMP@minilhc >SET linesize 1000
TMP@minilhc >exec dbms_output.put_line(lpad('x',2001,'y'));
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
x
 
PL/SQL procedure successfully completed.
 
Elapsed: 00:00:00.00
Rams7s est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2011, 18h00   #8
Membre confirmé
 
Homme Grégoire MARTIN
Ingénieur développement logiciels
Inscription : janvier 2011
Messages : 128
Détails du profil
Informations personnelles :
Nom : Homme Grégoire MARTIN
Âge : 32
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Finance

Informations forums :
Inscription : janvier 2011
Messages : 128
Points : 225
Points : 225
ALors pourquoi ?

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
SQL> SET linesize 1000;
SQL> DECLARE
  2     var varchar2(300);
  3  BEGIN
  4  
  5     var := 'yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy';
  6  
  7     dbms_output.put_line( var );
  8  
  9  END;
 10  /
 
DECLARE
   var varchar2(300);
BEGIN
 
   var := 'yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy';
 
   dbms_output.put_line( var );
 
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 8
__________________
Cordialement.
ORA-007 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2011, 18h13   #9
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 686
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 686
Points : 10 431
Points : 10 431
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
C'est juste une histoire de version.

9i
Code :
1
2
3
4
5
6
begin dbms_output.put_line(lpad('x',256,'y')); end;
 
ORA-20000: ORU-10028: line length overflow, LIMIT of 255 chars per line
ORA-06512: à "SYS.DBMS_OUTPUT", ligne 35
ORA-06512: à "SYS.DBMS_OUTPUT", ligne 133
ORA-06512: à ligne 1
11g
Code :
1
2
3
begin dbms_output.put_line(lpad('x',256,'y')); end;
 
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyx
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2011, 18h15   #10
Membre du Club
 
Homme Arnaud
Inscription : octobre 2002
Messages : 56
Détails du profil
Informations personnelles :
Nom : Homme Arnaud
Âge : 32
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2002
Messages : 56
Points : 66
Points : 66
Je ne veux pas dire de bêtise mais il me semblait que cette limite de 255 caractères était levée depuis la 10gR2, et qu'elle était passé à 32k.


Sur quelle version de base as-tu lancé ton script ORA-007?

(Je viens de tester ton bloc sur une 11gR2, cela passe sans souci)

EDIT: Décidément, je n'arrête pas de me faire griller aujourd'hui
__________________
Tuning and optimization are not a fix to a bad design. A good design is a fix to a bad design.
Dajon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2011, 23h05   #11
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
Le % de personnes qui ont la 11g est assez faible.. Enfin, le lien http://psoug.org/reference/dbms_output.html te donne raison c'est bien à partir de la 10gR2 que la limite passe à 32K
__________________
More Code : More Bugs. Less Code : Less Bugs
McM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 10h02   #12
Futur Membre du Club
 
Inscription : septembre 2011
Messages : 51
Détails du profil
Informations forums :
Inscription : septembre 2011
Messages : 51
Points : 15
Points : 15
ORA-007 : Je suis sous SQL Developer 3.0.0.4. Ce qui est incompréhensible c'est que çà à déjà fonctionner !

dramanebox :
- Il est vrai que les parenthèses ne sont pas obligatoire mais elle n'empeche pas l'exécution d'une telle requête et ne levent aucune erreur.

- Non ta syntaxe n'apporte rien de nouveau, je n'ai toujours que 'anonymous block completed' qui s'affiche et rien d'autre La DML s'exécute toujours correctement !

McM : Je suis sur du 11gR2 avec le dernier CPU.

Bon, je ne comprends vraiment pas. Je demanderai aux DBA s'ils ont changé des parametres lors de la prochaine réunion...
C'est quand meme étonnant que, dans une même session, je passe d'un affichage à plus aucun d'affichage sans rien n'avoir modifié. Ce matin, meme chose avec une nouvelle session, je n'ai toujours rien...

alex_972 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 10h11   #13
Membre confirmé
 
Homme Grégoire MARTIN
Ingénieur développement logiciels
Inscription : janvier 2011
Messages : 128
Détails du profil
Informations personnelles :
Nom : Homme Grégoire MARTIN
Âge : 32
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Finance

Informations forums :
Inscription : janvier 2011
Messages : 128
Points : 225
Points : 225
je ne connaissais pas cette différence 9i // 11gR2.

Code :
1
2
3
4
5
6
7
8
9
SQL> SELECT * FROM v$version;
 
BANNER
----------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.7.0 - 64bit Production
PL/SQL Release 9.2.0.7.0 - Production
CORE	9.2.0.7.0	Production
TNS FOR IBM/AIX RISC System/6000: Version 9.2.0.7.0 - Production
NLSRTL Version 9.2.0.7.0 - Production
__________________
Cordialement.
ORA-007 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 13h50   #14
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
Alex, essaye sous sql+ pour être sur que c'est un problème de base et pas de sqldev
__________________
More Code : More Bugs. Less Code : Less Bugs
McM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 16h30   #15
Membre éclairé
 
Avatar de boussafi
 
Homme
Ingénieur développement logiciels
Inscription : septembre 2007
Messages : 342
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Algérie

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Industrie

Informations forums :
Inscription : septembre 2007
Messages : 342
Points : 397
Points : 397
Envoyer un message via Yahoo à boussafi Envoyer un message via Skype™ à boussafi
tu peux aussi dans ton programme ajouter

Code :
DBMS_OUTPUT.ENABLE(100000);
ça peut dbms_output est désactivé
boussafi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/10/2011, 11h17   #16
Futur Membre du Club
 
Inscription : septembre 2011
Messages : 51
Détails du profil
Informations forums :
Inscription : septembre 2011
Messages : 51
Points : 15
Points : 15
boussafi : J'avais déjà vu çà dans un autre sujet sur le forum. Je viens de réessayer mais ça ne fonctionne pas.

McM : Je viens de m'apercevoir que je n'ai plus mon mot de passe. Comme un idiot, j'ai demandé à SQL developer de le conserver... du coup, je ne m'en rappelle plus...

Connaissez vous un moyen de le récupérer le mot de passe sous SQL developer ?
alex_972 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h16.


 
 
 
 
Partenaires

Hébergement Web