[SQL] effacer toutes les tables

Résolu
steelspirit Messages postés 275 Date d'inscription   Statut Membre -  
gaelgeek Messages postés 8 Statut Membre -
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

  1. batmat Messages postés 1880 Date d'inscription   Statut Membre 114
     
    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
    1. batmat Messages postés 1880 Date d'inscription   Statut Membre 114
       
      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
      1. asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426 > batmat Messages postés 1880 Date d'inscription   Statut Membre
         
        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
      2. batmat Messages postés 1880 Date d'inscription   Statut Membre 114 > asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention  
         
        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
      3. steelspirit Messages postés 275 Date d'inscription   Statut Membre 80 > batmat Messages postés 1880 Date d'inscription   Statut Membre
         
        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