IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

Problème DROP TABLE


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2
    Par défaut Problème DROP TABLE
    Bonjour à tous,

    Petit nouveau dans la communauté, je souhaiterai avoir quelques éclaircissements sur le problème suivant:

    J'ai créé cette petite routine me permettant de récupérer les noms et date de création de certaines tables de ma BDD pour pouvoir les supprimer automatiquement.
    Cependant, j'ai une erreur sur le DROP TABLE (syntax error) dans la boucle WHILE, du fait que DROP TABLE interprète mal le passage de ma variable @NomTable comme Nom de table effectif.

    Voici le code en question:

    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
    DECLARE @NomTable as varchar(50)
     
    CREATE TABLE AB_TABLES_TEMPO_SILOG (Nom varchar(50),DateCreation Datetime)
     
    INSERT INTO AB_TABLES_TEMPO_SILOG
    SELECT name,crdate from sysobjects where xtype='U' and left(name,8)='XPLANART' and len(name)>9 order by name
     
    DELETE FROM AB_TABLES_TEMPO_SILOG WHERE CAST(Datediff(day,0,GETDATE()) as DateTime) <= CAST(Datediff(day,0,DateCreation) as DateTime)
     
    SET @NomTable = (SELECT TOP 1 Nom FROM AB_TABLES_TEMPO_SILOG)
    WHILE @NomTable <> '' OR @NomTable <> NULL
    BEGIN
        SET @NomTable = (SELECT TOP 1 Nom FROM AB_TABLES_TEMPO_SILOG)
        DROP TABLE @NomTable
        DELETE FROM AB_TABLES_TEMPO_SILOG WHERE Nom=@NomTable
    END
     
    DROP TABLE AB_TABLES_TEMPO_SILOG
    Je vous remercie d'avance,

    Bien cordialement.

  2. #2
    Expert confirmé
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

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

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Par défaut
    Bonjour,

    Ceci ne fonctionnera pas. Il faut utiliser l'instruction EXEC pour cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ...
    EXEC('DROP TABLE ' + @NomTable);
    ...
    ++

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2
    Par défaut
    Merci beaucoup, c'est vrai que je n'y avais pas pensé.

    Bonne fin d'après-midi à tous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème Trigger et drop table
    Par Tomgourou dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 12/08/2009, 12h22
  2. Problème de TABLE ACCESS FULL
    Par elitost dans le forum Administration
    Réponses: 14
    Dernier message: 25/09/2004, 12h37
  3. problème collection TABLE
    Par venusiafalls dans le forum SQL
    Réponses: 6
    Dernier message: 28/04/2004, 16h48
  4. problème de table
    Par ekmule dans le forum Langage SQL
    Réponses: 2
    Dernier message: 20/04/2004, 14h04
  5. urgent drop tables
    Par divableue dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 23/10/2003, 14h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo