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

MS SQL Server Discussion :

Cuseur et variable dans le FROM


Sujet :

MS SQL Server

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    176
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 176
    Points : 91
    Points
    91
    Par défaut Cuseur et variable dans le FROM
    Bonne rencontre,

    Je possède X base de données avec la même structure. J’ai essayé de faire une PS qui contient un curseur qui fonctionne dynamiquement. Je n’arrive pas à trouver par contre la bonne syntaxe pour avoir une variable qui contient le nom de la DB dans le FROM.

    En gros actuellement, ça ressemble à ça :

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
     
    USE [master]
    GO
    /****** Object:  StoredProcedure [dbo].[test]    Script Date: 07/26/2011 10:25:23 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    -- =============================================
    -- Author:		<Author,,Name>
    -- Create date: <Create Date,,>
    -- Description:	<Description,,>
    -- =============================================
    ALTER PROCEDURE [dbo].[test]
        @dbname sysname
    AS
    BEGIN
        SET NOCOUNT ON
     
        IF @dbname IS NULL
        BEGIN
            RAISERROR('A database name has to be passed', 16, 1)
            RETURN
        END
     
        IF NOT EXISTS
        (
            SELECT    *
            FROM    sys.DATABASES
            WHERE    name = @dbname
            AND    state_desc <> 'ONLINE'
        )
        BEGIN
            RAISERROR('The %s database does not exist or is not available',6, 1,@dbname)
            RETURN
        END
     
        --DECLARE @sql nvarchar(max)
       -- SET    @sql = 'SELECT * FROM ' + @dbname + '.dbo.Clients'
       -- EXEC    sp_executesql @sql
       DECLARE @mail char(50);
     
      DECLARE @dbEnCours char(200);
     
      SET @dbEnCours = @dbname + 'dbo.Clients';
     
      DECLARE c_clientsDbSs CURSOR FOR SELECT Mail,AccordNewsletterAgence,DateDerniereModification,DerniereModificationPar FROM @dbEnCours
     
       CREATE TABLE #tmp_client(mail char(50));
     
       OPEN c_clientsDbSs;
       FETCH c_clientsDbSs INTO @mail;
     
       WHILE(@@FETCH_STATUS = 0)
    	BEGIN
    			INSERT INTO #tmp_client(mail) VALUES (@mail);
    			FETCH c_clientsDbSs INTO @mail;
    	END
     
    	CLOSE c_clientsDbSs;
     
    	DEALLOCATE c_clientsDbSs;
     
    	SELECT #tmp_client.mail FROM #tmp_client;
     
    	DROP TABLE #tmp_client;
    END
    Evidement, il me dit Must declare the table variable "@dbEnCours". J’ai essayé plusieurs syntaxe sans succès. Je trouve rien sur le net par rapport à ça.

    D’avance, merci pour vos conseils.
    Raphaël.

  2. #2
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    Je ne sais pas ce que tu cherches à faire (et je ne veux pas savoir :-() mais tu dois passer par du SQL dynamique...

    stocke le texte de ta requête dans une variable VARCHAR puis fais EXEC(@mavariable)
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    176
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 176
    Points : 91
    Points
    91
    Par défaut
    Autant pour moi... J'avais fait le test avant de poster mais j'ai du commettre une erreur car je n'avais pas de résultats.

    Ici, c'est ok.

    Merci

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

Discussions similaires

  1. Variable dans le FROM ou FROM composé , FROM ajustable
    Par V i n c e n t dans le forum Langage SQL
    Réponses: 5
    Dernier message: 28/05/2014, 18h02
  2. procédure avec variable dans le from
    Par cedlensois dans le forum Développement
    Réponses: 2
    Dernier message: 24/03/2009, 09h50
  3. PLSQL: placer une variable dans une clause FROM
    Par Tiéry dans le forum PL/SQL
    Réponses: 6
    Dernier message: 02/03/2009, 15h43
  4. variable dans clause from
    Par LesDeuxZ dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 15/06/2007, 11h34
  5. Variable dans la clause from ?
    Par All Jinx dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 29/11/2006, 11h38

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