Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[sql serveur2000] drop table en serie

4 réponses
Avatar
Stephan Guillermond
Bonjour,

n'ayant plus pratiqué le Tsql depuis quelques années (et sans avoir crée des
stored procedures allant au dela d'une suite de select,delete..), je but sur
le probléme suivant:

je souhaite détruire des tables qui ont été renomées avec le sufixe: '_OLD'
dans le même bd.
j'obtiens la liste de ces tables par:

use MaBD
select name from sysobjects where xtype='U' and right(name,4)='_OLD'

Et là, je ne sais pas faire (en TSQL) car en programmation je ferais une
boucle du genre:

recordset= execution de ma query(select name from sysobjects where xtype='U'
and right(name,4)='_OLD' )
while trouve(mon recorset)
$NomTable =recorset.name
drop table $NomTable
next

Mais je dois faire un script directement en SQl.
Merci de me donner vos idées et de m'indiquer où chercher dans l'aide.

Bonne journée.

Stéphan - français au pays des tulipes

4 réponses

Avatar
Laurent Moreau
Comme ça par exemple:

DECLARE @Req Varchar(100)
WHILE EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE
TABLE_NAME like '%_OLD')
BEGIN
SELECT TOP 1 @Req='DROP TABLE '+TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME like '%_OLD'
EXEC (@Req)
END


Sinon avec un curseur, voir aide de CREATE CURSOR



Laurent.





"Stephan Guillermond" wrote in message
news:bq7hro$1vhlrc$
Bonjour,

n'ayant plus pratiqué le Tsql depuis quelques années (et sans avoir crée


des
stored procedures allant au dela d'une suite de select,delete..), je but


sur
le probléme suivant:

je souhaite détruire des tables qui ont été renomées avec le sufixe:


'_OLD'
dans le même bd.
j'obtiens la liste de ces tables par:

use MaBD
select name from sysobjects where xtype='U' and right(name,4)='_OLD'

Et là, je ne sais pas faire (en TSQL) car en programmation je ferais une
boucle du genre:

recordset= execution de ma query(select name from sysobjects where


xtype='U'
and right(name,4)='_OLD' )
while trouve(mon recorset)
$NomTable =recorset.name
drop table $NomTable
next

Mais je dois faire un script directement en SQl.
Merci de me donner vos idées et de m'indiquer où chercher dans l'aide.

Bonne journée.

Stéphan - français au pays des tulipes







Avatar
bruno reiter [MVP]
mets ton résultat dans une table temporaire
puis une boucle while en sélectionnant le TOP 1 dans cette table, suppression de
la table, supprsion de la ligne dans la table tempo

br

"Stephan Guillermond" wrote in message
news:bq7hro$1vhlrc$
Bonjour,

n'ayant plus pratiqué le Tsql depuis quelques années (et sans avoir crée des
stored procedures allant au dela d'une suite de select,delete..), je but sur
le probléme suivant:

je souhaite détruire des tables qui ont été renomées avec le sufixe: '_OLD'
dans le même bd.
j'obtiens la liste de ces tables par:

use MaBD
select name from sysobjects where xtype='U' and right(name,4)='_OLD'

Et là, je ne sais pas faire (en TSQL) car en programmation je ferais une
boucle du genre:

recordset= execution de ma query(select name from sysobjects where xtype='U'
and right(name,4)='_OLD' )
while trouve(mon recorset)
$NomTable =recorset.name
drop table $NomTable
next

Mais je dois faire un script directement en SQl.
Merci de me donner vos idées et de m'indiquer où chercher dans l'aide.

Bonne journée.

Stéphan - français au pays des tulipes







Avatar
Stephan Guillermond
Bonjour laurent.

C'est parfais.
Merci.

Stéphan
Avatar
Stephan Guillermond
Merci bruno de tes conseils.

Stéphan