[SQL Server] Exécution procédure stockée avec paramètre

Résolu
lost0 Messages postés 3 Date d'inscription lundi 22 décembre 2008 Statut Membre Dernière intervention 28 août 2009 - 24 avril 2009 à 13:42
lost0 Messages postés 3 Date d'inscription lundi 22 décembre 2008 Statut Membre Dernière intervention 28 août 2009 - 27 avril 2009 à 11:37
Bonjour Tout le monde,


En fait cela fait deux jours que je cherche une solution mais je suis toujours bloqué .
j'ai créé une procédure stockée avec une requête en paramètre (c'est en fait pour importer plusieurs bases de données de type BD2005, BD2006 .. et les stocker dans une seule base BD):

set ANSI_NULLS ON
GO
set QUOTED_IDENTIFIER ON
GO


ALTER PROCEDURE [dbo].[TesT]
as
declare @strSQL NVARCHAR(264)
declare @years varchar(50)
DECLARE Testcursor CURSOR
        FOR SELECT mabase1.dbo.annees.years FROM mabase1.dbo.annees
  
OPEN Testcursor
FETCH NEXT FROM Testcursor
INTO @years
WHILE @@FETCH_STATUS = 0


BEGIN


SET @strSQL  =  N'SELECT monchamp'
             +   'FROM mabase[mailto:mabase'+@years+'.dbo.matable' '+@years+'.dbo.matable']  
             +   'WHERE macolonne = xxxx'
            
            EXEC sp_executeSQL @strSQL 
            
FETCH NEXT FROM Testcursor
INTO @years


END


CLOSE Testcursor
DEALLOCATE Testcursor
GO


alors le problème c'est que lorsque je fais clique droit/exécuter la procédure stockée .. ça me génère une procédure de type: 
 


USE [mabase2]


GO




DECLARE




@return_value


intEXEC



@return_value


=

[dbo]


.

[TesT]



SELECT








'Return Value'





=

@return_valueGO

et des erreurs:




Msg 102, Niveau 15, État 1, Ligne 1




Syntaxe incorrecte vers '.'.



Msg 102, Niveau 15, État 1, Ligne 1



Syntaxe incorrecte vers '.'.



(1 ligne(s) affectée(s))

Je n'ai pas compris la source d'erreur pour chercher la solution convenable.

Merci bcp d'avance .
Cdlt.
A voir également:

2 réponses

gperuch Messages postés 40 Date d'inscription dimanche 18 janvier 2009 Statut Membre Dernière intervention 2 février 2012 1
26 avril 2009 à 21:09
Salut, quant tu as une erreur de ce type je te conseilles de remplacer le    EXEC sp_executeSQL @strSQL  par un print @strSQL
et tu verra qu'il n'y a pas d'espace entre monchamp et from entre mabase et @year etc....
si l'erreur n'est pas la, recuperes le resultat du print et execute le et tu verra peut etre l'erreur

SET @strSQL  =  N'SELECT monchamp'
             +   'FROM mabase[mailto:mabase '+@years+'.dbo.matable']  
             +   'WHERE macolonne = xxxx'
            
@strSQL  =  SELECT monchampFROM mabase[mailto:mabase @years.dbo.matable]WHERE macolonne = xxxx

greg
2
Rejoignez-nous