[SQL] effacer toutes les tables

Résolu/Fermé
steelspirit Messages postés 277 Date d'inscription lundi 12 mai 2003 Statut Membre Dernière intervention 22 octobre 2008 - 25 juin 2003 à 14:44
gaelgeek Messages postés 7 Date d'inscription dimanche 15 janvier 2012 Statut Membre Dernière intervention 26 janvier 2012 - 16 janv. 2012 à 16:16
Bonjour à tous !
Je ne sais pas si c'est possible mais je souhaiterai, en sql, vider le contenue d'une base car faire des drop table nom_table c'est bien mais quand on a beaucoup de table c'est pas le top !

Merci d'avance pour votre aide

- T'as pas vu Chloraine ?
- C'est qui Chloraine ? - Ah ! Ah ! Ah !

12 réponses

batmat Messages postés 1871 Date d'inscription jeudi 1 novembre 2001 Statut Membre Dernière intervention 9 janvier 2008 114
26 juin 2003 à 11:36
Il existe une table contenant le nom de toutes tes tables :

select table_name from user_tables;

Je ne peux pas tester ici (je veux pas risquer d'effacer toutes les tables sur lesquelles je bosser ;)), mais renseigne toi sur le SQL dynamique.

En effet :
CURSOR c_mestables IS

select table_name
from user_tables;

et ensuite faire
for cur_table in c_mestables

LOOP
truncate table cur_table; -- attention au truncate : pas de rollback possible...
END LOOP;


Ca parait alléchant comme ça, mais ça ne marchera pas ;) Il te dira qu'il ne connait pas la table cur_table :). Je crois qu'il y a donc ptete une solution avec le package dbms_sql

@++

Vous hésitez entre Linux et Windows ?
Vous voulez dépenser du temps ou de l'argent ? :-D
2
batmat Messages postés 1871 Date d'inscription jeudi 1 novembre 2001 Statut Membre Dernière intervention 9 janvier 2008 114
26 juin 2003 à 11:40
Merde, là t'as répondu plus vite :)
@++

Vous hésitez entre Linux et Windows ?
Vous voulez dépenser du temps ou de l'argent ? :-D
0
asevere Messages postés 13084 Date d'inscription lundi 28 janvier 2002 Statut Webmaster Dernière intervention 3 février 2022 426 > batmat Messages postés 1871 Date d'inscription jeudi 1 novembre 2001 Statut Membre Dernière intervention 9 janvier 2008
26 juin 2003 à 12:01
He voui !

Mais dit moi... en appliquant ta methode... un ne rique pas de suprimer toutes els tables de TOUTES les bdd ?
:o)

ha bah ca m'a remis en forme :-DDDD

Na kaer eo va Breizh,
gand ar mor glaz èn-dro dezi !
0
batmat Messages postés 1871 Date d'inscription jeudi 1 novembre 2001 Statut Membre Dernière intervention 9 janvier 2008 114 > asevere Messages postés 13084 Date d'inscription lundi 28 janvier 2002 Statut Webmaster Dernière intervention 3 février 2022
26 juin 2003 à 13:04
Petit pb : je doute que la méthode que j'ai donnée fonctionne ailleurs que sous un SGBD qui supporte le PL/SQL ... (Oracle à l'origine)... Mais sous Oracle, non : user_tables est, je crois, une vue où il n'y a que tes tables.

@++

Vous hésitez entre Linux et Windows ?
Vous voulez dépenser du temps ou de l'argent ? :-D
0
steelspirit Messages postés 277 Date d'inscription lundi 12 mai 2003 Statut Membre Dernière intervention 22 octobre 2008 80 > batmat Messages postés 1871 Date d'inscription jeudi 1 novembre 2001 Statut Membre Dernière intervention 9 janvier 2008
26 juin 2003 à 13:10
j'utilise postgreSQL et il supporte bien le PL/SQL

exemple

DECLARE
curs1 refcursor;
curs2 CURSOR FOR SELECT * FROM tenk1;
curs3 CURSOR (key integer) IS SELECT * FROM tenk1 WHERE unique1 = key;

- T'as pas vu Chloraine ?
- C'est qui Chloraine ? - Ah ! Ah ! Ah !
0