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 ...
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
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
 
ALTER PROCEDURE TESTPROC
(
	@ShortName VARCHAR(50)
)
AS
Begin
 
	exec [serveur].[db].dbo.sp_executesql 
	N'Select * from emp where ShortName = ''@ShortName'' 
	'
END
GO
et j'execute ainsi :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
EXEC TESTPROC @ShortName = 'totot'
Le probleme c'est que si je bidouille un peu soit SQL server me dit : Must declare the scalar variable "@ShortName".
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