Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/07/2011, 13h33   #1
Membre du Club
 
Inscription : décembre 2008
Messages : 159
Détails du profil
Informations forums :
Inscription : décembre 2008
Messages : 159
Points : 53
Points : 53
Par défaut Supprimer une liste de tables

Bonjour,

Comment faire pour supprimer une liste de tables dont le nom commence par TATA par exemple appartenant à un user TOTO?

Merci.
dari68 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2011, 14h08   #2
Membre confirmé
 
Avatar de Ahmed AANGOUR
 
Homme Ahmed AANGOUR
DBA Etudes Oracle
Inscription : janvier 2010
Messages : 123
Détails du profil
Informations personnelles :
Nom : Homme Ahmed AANGOUR
Âge : 33
Localisation : France

Informations professionnelles :
Activité : DBA Etudes Oracle

Informations forums :
Inscription : janvier 2010
Messages : 123
Points : 217
Points : 217
Une solution:
Code :
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
__________________
Mon blog Oracle: http://ahmedaangour.blogspot.com/
Ahmed AANGOUR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2011, 14h11   #3
Membre confirmé
 
Avatar de Ahmed AANGOUR
 
Homme Ahmed AANGOUR
DBA Etudes Oracle
Inscription : janvier 2010
Messages : 123
Détails du profil
Informations personnelles :
Nom : Homme Ahmed AANGOUR
Âge : 33
Localisation : France

Informations professionnelles :
Activité : DBA Etudes Oracle

Informations forums :
Inscription : janvier 2010
Messages : 123
Points : 217
Points : 217
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 :
1
2
 
WHERE table_name LIKE 'TATA%'
__________________
Mon blog Oracle: http://ahmedaangour.blogspot.com/
Ahmed AANGOUR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2011, 16h00   #4
Membre du Club
 
Inscription : décembre 2008
Messages : 159
Détails du profil
Informations forums :
Inscription : décembre 2008
Messages : 159
Points : 53
Points : 53
Citation:
Envoyé par Ahmed AANGOUR Voir le message
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 :
1
2
 
WHERE table_name LIKE 'TATA%'
Merci.

dari68 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2011, 18h09   #5
Expert Confirmé Sénior


 
Avatar de laurentschneider
 
Homme Laurent Schneider
Administrateur de base de données
Inscription : décembre 2005
Messages : 2 925
Détails du profil
Informations personnelles :
Nom : Homme Laurent Schneider
Localisation : Suisse

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Finance

Informations forums :
Inscription : décembre 2005
Messages : 2 925
Points : 4 547
Points : 4 547
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 :
execute immediate ('drop table "'|| cur_rec.table_name||'" cascade constraints');
__________________
Mon blog : laurentschneider.com
Mon livre : Advanced Oracle SQL Programming
laurentschneider est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 21/07/2011, 11h34   #6
Membre du Club
 
Inscription : décembre 2008
Messages : 159
Détails du profil
Informations forums :
Inscription : décembre 2008
Messages : 159
Points : 53
Points : 53
Merci à vous deux de votre aide.

Code :
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+
dari68 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h42.


 
 
 
 
Partenaires

Hébergement Web