Bonjour bonjour,
J'essaie de creer une procedure stockee dans une db A qui va executer une requete sur une db B. (Pour x raisons je dois proceder ainsi)
J'utilise pour ca la commande dbo.sp_executesql precede du serveur et de la db a utilise.
En cherchant un peu j'ai trouve deux facons de faire mais aucune ne marchent ...
Ou bien
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Create PROCEDURE TESTPROC ( @ShortName NVARCHAR(50) ) AS Begin Declare @sql NVARCHAR(1000) SET @sql = N'Select * from emp where ShortName = ''@ShortName'' ' exec [serveur].[db].dbo.sp_executesql @ShortName, @sql END GO
et j'execute ainsi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 ALTER PROCEDURE TESTPROC ( @ShortName VARCHAR(50) ) AS Begin exec [serveur].[db].dbo.sp_executesql N'Select * from emp where ShortName = ''@ShortName'' ' END GO
Le probleme c'est que si je bidouille un peu soit SQL server me dit : Must declare the scalar variable "@ShortName".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 EXEC TESTPROC @ShortName = 'totot'
Soit ca me retourne une table vide. ( La requete marche sans le parametre, si je met une valeur en dure)
Quelau'un saurait la raison de mon probleme ?
Merci Beaucoup
Partager