Bonjour,
Comment faire pour supprimer une liste de tables dont le nom commence par TATA par exemple appartenant à un user TOTO?
Merci.
Bonjour,
Comment faire pour supprimer une liste de tables dont le nom commence par TATA par exemple appartenant à un user TOTO?
Merci.
Une solution:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 C:\HOMEWARE\Ahmed\scripts\sqlplus>sqlplus toto/toto SQL*Plus: Release 11.2.0.1.0 Production on Wed Jul 20 14:04:47 2011 Copyright (c) 1982, 2010, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> select table_name from user_tables; TABLE_NAME ------------------------------ T1_LOG T1_NEW T3 T4 SKEW TAB_EUGENE T2_LOG 7 rows selected. SQL> begin 2 for cur_rec in (select table_name from user_tables) loop 3 execute immediate ('drop table '|| cur_rec.table_name); 4 end loop; 5 end; 6 / PL/SQL procedure successfully completed. SQL> select table_name from user_tables; no rows selected
J'ai mal lu ton énoncé. J'ai pas vu que tu voulais juste les tables commençant par TATA
Dans le script ci-dessus il suffit d'ajouter dans la requête du curseur la clause WHERE suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 WHERE table_name like 'TATA%'
pour éviter les erreurs avec les noms de tables réservées, utilise "
pour éviter les problèmes de clés étrangère. utilise cascade constraints
Code : Sélectionner tout - Visualiser dans une fenêtre à part execute immediate ('drop table "'|| cur_rec.table_name||'" cascade constraints');
Merci à vous deux de votre aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 SQL> begin 2 for tab in (select table_name from user_tables where table_name like 'TST_1%') loop 3 execute immediate ('drop table "'||tab.table_name||'"'); 4 end loop; 5 end; 6 / PL/SQL procedure successfully completed. SQL> select table_name from user_tables where table_name like 'TST_1%' ; no rows selected SQL>
A+
Partager