Précédent   Forum des professionnels en informatique > Bases de données > Sybase
Sybase Forum sur la base de données Sybase. Avant de poster -> F.A.Q Sybase, Tutoriels Sybase
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 30/09/2004, 09h42   #1
Membre confirmé
 
Avatar de Higgins
 
Inscription : juillet 2002
Messages : 292
Détails du profil
Informations forums :
Inscription : juillet 2002
Messages : 292
Points : 253
Points : 253
Par défaut [sybase] Suppression de tables par lot

Bonjour à tous,
je souhaiterais pouvoir supprimer automatiquement un ensemble de tables qui commencent toutes par les trois mêmes caractères , par exemple TMP
J'ai essayé sans conviction:
Code :
1
2
 
DROP TABLE (SELECT table_name FROM systable WHERE table_name LIKE 'TMP%')
qui a évidemment déclenché une "syntax error".

j'ai essayé
Code :
1
2
 
DELETE FROM systable WHERE table_name LIKE 'TMP%'
mais ce n'est pas autorisé, même connecté en dba

je pourrais bien sûr me palucher les lignes avec
Code :
1
2
3
DROP TABLE TMP1;
DROP TABLE TMP2
....
mais des tables similaires sont susceptibles de réapparaître avec des noms différents (la partie du nom derrière TMP est aléatoire) et je ne pourrais pas réutiliser mon code.

Quelqu'un a-t-il une solution ?
Higgins est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2004, 15h45   #2
Rédacteur/Modérateur
 
Avatar de fadace
 
Homme Fabien Celaia
Administrateur de base de données
Inscription : octobre 2002
Messages : 3 779
Détails du profil
Informations personnelles :
Nom : Homme Fabien Celaia
Âge : 41
Localisation : Suisse

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Service public

Informations forums :
Inscription : octobre 2002
Messages : 3 779
Points : 8 124
Points : 8 124
Envoyer un message via ICQ à fadace Envoyer un message via Skype™ à fadace
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
declare cur cursor FOR
SELECT name FROM sysobjects WHERE type='U' AND name LIKE 'TMP%'
FOR UPDATE
 
declare @v varchar(255)
 
open cur
 
fetch cur INTO @v
while @@sqlstatus <> 0
begin
SELECT @v = 'drop table '+@v
execute (@v)
fetch cur INTO @v
end
 
close cur
deallocate cursor cur
fadace est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2004, 16h42   #3
Membre confirmé
 
Avatar de Higgins
 
Inscription : juillet 2002
Messages : 292
Détails du profil
Informations forums :
Inscription : juillet 2002
Messages : 292
Points : 253
Points : 253
Merci beaucoup
Higgins 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 04h51.


 
 
 
 
Partenaires

Hébergement Web