script sur une vue [PL-SQL] - SQL/NoSQL - Programmation
Marsh Posté le 03-07-2007 à 12:15:55
ca ne marchera pas comme ca, tu dois construire ton sql et l'exécuter, cherche du coté de execute immediat
tu devras faire un truc genre
Code :
|
Marsh Posté le 03-07-2007 à 13:38:05
Merci ça fonctionne, mais j'ai maintenant un autre soucis...
La requête SELECT qui dans le LOOP va s'executer sur toutes les tables contenues dans ma vue. Pour chacune des tables il faudrait que je stocke les résultats du SELECT dans un fichier. Le fichier en sortie doit porter le nom de la table sur laquelle j'ai fait le SELECT.
J'ai donc écrit ce code :
declare
Fichier UTL_FILE.FILE_TYPE ;
CURSOR c_listetab IS SELECT table_name FROM liste_tables;
begin
for i in c_listetab loop
Fichier := UTL_FILE.FOPEN( 'C:\', i.table_name||'.txt', 'W', 100000) ;
execute immediate 'select * from ' || i.table_name;
UTL_FILE.FCLOSE( Fichier);
end loop;
end;
Mais j'ai une erreur -> exception définie par l'utilisateur non traitée
Alors si vous avez une idée... merci d'avance !
Marsh Posté le 03-07-2007 à 13:58:01
fais un traitement d'exception pour la traiter plutot que la laisser remonter, et check le message.
charche du coté de exception sur google
Marsh Posté le 03-07-2007 à 11:37:14
Bonjour,
Je vous plante le décor :
j'ai une vue "liste_tables" qui contient 1 champ (=Table_name) dans lequel je stocke le nom de certaines tables de ma base.
Il faut que j'écrive un script me permettant de faire un :
select <un champ particulier> sur chacune des tables recensées dans ma vue.
Et ensuite idéalement il faudrait que j'arrive à sortir le résultat dans un fichier texte.
J'ai essayer de faire le select mais cela ne fonctionne pas :
DECLARE
v_nomtab VARCHAR2(30); -- contiendra le nom de la table, lu a partir de ma vue
CURSOR c_listetab IS SELECT table_name FROM liste_tables ORDER BY table_name;
BEGIN
OPEN c_listetab;
LOOP
FETCH c_listetab INTO v_nomtab;
SELECT * FROM v_nomtab;
END LOOP;
CLOSE c_listetab;
END;
Merci d'avance pour votre aide !