Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[ORACLE PL/SQL] DEBUTANT BESOIN AIDE

5 réponses
Avatar
Chris
Soit le script suivant :

question cela fonctionne mais j'ai pas de sortie pour voir la progression
pourquoi dbms_output.put_line ne fonctionne pas ?

set serveroutput on size 100000
set echo on
set feedback off
set verify off
connect sys/xxxx sysdba
declare
msg_log varchar(4000);
cursor table_list
is select table_name from dba_tables
where owner='&1';
table_list_rec table_list%ROWTYPE;
begin
dbms_output.put_line(' TEST ');
open table_list;
loop
msg_log := '-> ' || table_list_rec.table_name;
dbms_output.put_line(msg_log);
fetch table_list into table_list_rec.table_name;
exit when table_list%NOTFOUND;
execute immediate('analyze table &&1..'||
table_list_rec.table_name||' compute statistics');
execute immediate('analyze table
&&1..'||table_list_rec.table_name||' compute statistics for all indexed
columns');
end loop;
end;

A+
chris

5 réponses

Avatar
Igor Racic
Bonjour,

Il te manque un "/" apres le end (dans nouvelle ligne):

<quote>
end;
</quote>

==>

<quote>
end;
/
</quote>


NOTE: Utiliser 'analyze' n'est pas une bonne idée - regarde dbms_stats.

Igor
Avatar
astalavista
connect sys/xxxx sysdba
ne marche pas ...

un vrai copier/coller de la procédure serait mieux ...

----- Original Message -----
From: "Chris"
Newsgroups: fr.comp.applications.sgbd
Sent: Thursday, July 05, 2007 6:29 PM
Subject: [ORACLE PL/SQL] DEBUTANT BESOIN AIDE


Soit le script suivant :

question cela fonctionne mais j'ai pas de sortie pour voir la progression
pourquoi dbms_output.put_line ne fonctionne pas ?

set serveroutput on size 100000
set echo on
set feedback off
set verify off
connect sys/xxxx sysdba
declare
msg_log varchar(4000);
cursor table_list
is select table_name from dba_tables
where owner='&1';
table_list_rec table_list%ROWTYPE;
begin
dbms_output.put_line(' TEST ');
open table_list;
loop
msg_log := '-> ' || table_list_rec.table_name;
dbms_output.put_line(msg_log);
fetch table_list into table_list_rec.table_name;
exit when table_list%NOTFOUND;
execute immediate('analyze table &&1..'||
table_list_rec.table_name||' compute statistics');
execute immediate('analyze table
&&1..'||table_list_rec.table_name||' compute statistics for all indexed
columns');
end loop;
end;

A+
chris
Avatar
Chris
Soit le script suivant :

question cela fonctionne mais j'ai pas de sortie pour voir la progression
pourquoi dbms_output.put_line ne fonctionne pas ?

set serveroutput on size 100000
set echo on
set feedback off
set verify off
connect sys/xxxx as sysdba <= j'ai glissé
declare
msg_log varchar(4000);
cursor table_list
is select table_name from dba_tables
where owner='&1';
table_list_rec table_list%ROWTYPE;
begin
dbms_output.put_line(' TEST ');
open table_list;
loop
msg_log := '-> ' || table_list_rec.table_name;
dbms_output.put_line(msg_log);
fetch table_list into table_list_rec.table_name;
exit when table_list%NOTFOUND;
execute immediate('analyze table &&1..'||
table_list_rec.table_name||' compute statistics');
execute immediate('analyze table
&&1..'||table_list_rec.table_name||' compute statistics for all indexed
columns');
end loop;
end;

A+
chris
Avatar
Chris
Bonjour,

Igor Racic a écrit :
Bonjour,

Il te manque un "/" apres le end (dans nouvelle ligne):

<quote>
end;
</quote>

==>

<quote>
end;
/
</quote>




Grrrr ! bon je debute avec pl/sql


NOTE: Utiliser 'analyze' n'est pas une bonne idée - regarde dbms_stats.




Tiens justement quel est la différence (plus rapide ?)


Igor



Encore merci

A+
chris
Avatar
Igor Racic
Bonjour,

Pour calculer les stats pour les plans d'exécution - il faut utiliser
dbms_stats.

La doc d'Oracle est dans
tahiti.oracle.com


Igor




Tiens justement quel est la différence (plus rapide ?)