Un exemple récupéré dans l'aide en ligne :
USE
AdventureWorks;GO
DECLARE
@SQLString nvarchar(500);DECLARE
@ParmDefinition nvarchar(500);DECLARE
@SalesOrderNumber nvarchar(25);DECLARE
@IntVariable int;SET
@SQLString = N'SELECT @SalesOrderOUT = MAX(SalesOrderNumber)FROM Sales.SalesOrderHeader
WHERE CustomerID = @CustomerID'
;SET
@ParmDefinition = N'@CustomerID int,@SalesOrderOUT nvarchar(25) OUTPUT'
;SET
@IntVariable = 22276;EXECUTE
sp_executesql@SQLString
,@ParmDefinition
,@CustomerID
= @IntVariable,@SalesOrderOUT
= @SalesOrderNumber OUTPUT;-- This SELECT statement returns the value of the OUTPUT parameter.
SELECT
@SalesOrderNumber;-- This SELECT statement uses the value of the OUTPUT parameter in
-- the WHERE clause.
SELECT
OrderDate, TotalDueFROM
Sales.SalesOrderHeaderWHERE
SalesOrderNumber = @SalesOrderNumber;On ne peut pas faire de :
@x = EXEC
dans SQL Server
Pour cette raison on indique la liste des paramètres en 2ème argument de sp_executesql et on met bien le mot clef OUTPUT pour indiquer que l'on à faire à un paramètre de sortie (dont on souhaite récuperer la valeur).
Cordialement,
Christian Robert - Winwise
http://blogs.developpeur.org/christian/MCT - Database Development / Database Administration