erreur lors de tronquer les tables à partir d'oracle db

Je suis en train de faire quelque chose comme cela dans une procédure pour effacer toutes les données de toutes les tables dans ma base de données.

LOOP
    dbms_utility.exec_ddl_statement('alter table ' || c.owner || '.' || c.table_name || ' disable constraint ' || c.constraint_name);
  END LOOP;
 .
 .
 .

LOOP
    EXECUTE IMMEDIATE 'TRUNCATE TABLE ' || t.table_name ;
  END LOOP;

Maintenant , cela lève l'erreur suivante :

ORA-03291: Invalid truncate option - missing STORAGE keyword
ORA-06512: at "MYSCHEMA.CLEAR_DATA", line 15
ORA-06512: at line 2
Process exited.
Disconnecting from the database MYDB.
  1. Pourquoi est un espace de stockage de mot-clé obligatoire? J'ai pensé DROP STORAGE a la valeur par défaut.
  2. Même spécification de stockage à proximité, comme dans

    EXÉCUTION IMMÉDIATE "TRUNCATE TABLE' || t.nom_table | | l '"abandon " STOCKAGE";

    ne l'aide pas. L'erreur est la même.

  3. J'ai pensé qu'il pourrait avoir quelque chose à voir avec l'étranger contraintes sur certaines tables. Par conséquent, le "désactiver la contrainte" plus tôt dans le script
  • Vous devriez essayer de changer EXÉCUTION IMMÉDIATE "TRUNCATE TABLE' || t.nom_table | | l '"abandon " STOCKAGE"; à EXÉCUTION IMMÉDIATE "TRUNCATE TABLE' || t.nom_table | | l '"abandon " STOCKAGE"; Peut-être manquant un peu d'espace 🙂
InformationsquelleAutor | 2009-03-18