Je fais quelque chose comme ça dans une procédure pour effacer toutes les données de toutes les tables dans ma base de données.erreur lors de la troncature des tables à partir d'oracle db
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 jette 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.
- Pourquoi un mot-clé de stockage obligatoire? Je pensais que
DROP STORAGE
était la valeur par défaut. Même spécification de stockage à proximité, comme dans
EXECUTE IMMEDIATE 'TRUNCATE TABLE' || t.table_name || 'DROP STORAGE';
n'aide pas. L'erreur est la même.
- Je pensais que cela pourrait avoir quelque chose à voir avec des contraintes étrangères sur certaines tables. Par conséquent, la «contrainte de désactiver plus haut dans le script
Vous devez essayer de changer EXECUTE IMMEDIATE 'TRUNCATE TABLE' || t.table_name || 'DROP STORAGE'; à EXECUTEZ IMMEDIATEMENT 'TRUNCATE TABLE' || t.table_name || 'DROP STORAGE'; Peut-être manquer de l'espace :) – BlackKat