S'il ne s'agit pas vraiment d'un problème de paramètre de sortie, mais plutôt d'un ensemble de résultats, alors devinez que SpWithOutputID
fait quelque chose comme ça (renvoie un SELECT
avec une seule ligne et une seule colonne) :
CREATE PROCEDURE dbo.SpWithOutputID
AS
BEGIN
SET NOCOUNT ON;
SELECT ID = 4;
END
GO
Puis Test1
pourrait ressembler à ceci :
CREATE PROCEDURE dbo.Test1
AS
BEGIN
SET NOCOUNT ON;
DECLARE @ID INT;
CREATE TABLE #x(ID INT);
INSERT #x EXEC dbo.SpWithOutputID;
SELECT TOP (1) @ID = ID FROM #x;
DROP TABLE #x;
END
GO
Mais cela ne vous semble-t-il pas vraiment désordonné ? Cela devrait vraiment fonctionner de cette façon pour les valeurs scalaires uniques :
CREATE PROCEDURE dbo.SpWithOutputID
@ID INT OUTPUT
AS
BEGIN
SET NOCOUNT ON;
SELECT @ID = 4;
END
GO
Désormais, il est beaucoup plus simple de consommer ce qui est réellement un paramètre de sortie :
CREATE PROCEDURE dbo.Test1
AS
BEGIN
SET NOCOUNT ON;
DECLARE @ID INT;
EXEC dbo.SpWithOutputID @ID = @ID OUTPUT;
SELECT @ID;
END
GO