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 :

Utilisation de "USE"


Sujet :

Développement SQL Server

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    430
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2006
    Messages : 430
    Par défaut Utilisation de "USE"
    Bonjour

    J'ai essayé de mettre "USE maBase" dans une procédure stockée et il parrait que ce n'est pas acceptable.

    Savez-vous s'il y a une autre alternative ?

    Si non savez-vous comment je peux tester si la table table_1 existe dans la bases de données maBase_1 et la table table_2 dans la base de données ma_Base_2


    Merci d'avance.

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Il vous suffit de préfixer le nom de la table par le schéma à laquelle elle appartient (ce que vous devez faire tout le temps), et par la base de données qui héberge le schéma.

    savez-vous comment je peux tester si la table table_1 existe dans la bases de données maBase_1
    Il me semble que vous êtes sous SQL Server 2000.
    Essayez donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    IF EXISTS
    (
    	SELECT *
    	FROM mabase_1.sysobjects
    	WHERE name = table_1
    )
    BEGIN
    	-- Traitement
    END
    Idem pour table_2

    @++

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    430
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2006
    Messages : 430
    Par défaut
    Citation Envoyé par elsuket Voir le message
    Bonjour,

    Il vous suffit de préfixer le nom de la table par le schéma à laquelle elle appartient (ce que vous devez faire tout le temps), et par la base de données qui héberge le schéma.



    Il me semble que vous êtes sous SQL Server 2000.
    Essayez donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    IF EXISTS
    (
        SELECT *
        FROM mabase_1.sysobjects
        WHERE name = table_1
    )
    BEGIN
        -- Traitement
    END
    Idem pour table_2

    @++
    je pensais que la table sysobjects existait seulement dans la base données Master.

    Merci bien Elsuket

  4. #4
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Ce que je vous ai donné est incorrect, car il manque le schéma auquel appartient la table système sysobjects, et un filtre sur les objets de type table utilisateur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *
    FROM maBD.dbo.sysobjects
    WHERE xtype = 'U' -- table utilisateur
    @++

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    430
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2006
    Messages : 430
    Par défaut
    Citation Envoyé par elsuket Voir le message
    Ce que je vous ai donné est incorrect, car il manque le schéma auquel appartient la table système sysobjects, et un filtre sur les objets de type table utilisateur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *
    FROM maBD.dbo.sysobjects
    WHERE xtype = 'U' -- table utilisateur
    @++
    Mais ici il manque le nom de la table que je cherche. Est-ce que tu voulais dire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *
    FROM maBD.dbo.sysobjects
    WHERE name = maTable and xtype = 'U'
    Je pense qu'on rajoute le xtype seulement pour faire sur qu'il n'y a pas une autre table du même nom mais de type différent. Est-ce exact ?

  6. #6
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Je pense qu'on rajoute le xtype seulement pour faire sur qu'il n'y a pas une autre table du même nom mais de type différent. Est-ce exact ?
    En fait deux objets du même schéma ne peuvent pas avoir le même nom (objet = table, vue, procédure stockée, trigger, fonction, ...)

    Le fait donc de rajouter :
    Est un simple "blindage" dont on peut se passer.

    Mais ici il manque le nom de la table que je cherche. Est-ce que tu voulais dire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *
    FROM maBD.dbo.sysobjects
    WHERE name = maTable AND xtype = 'U'
    Oui

    @++

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 27/11/2006, 18h00

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