Als dit niet echt een probleem met de uitvoerparameter is, maar eerder een resultaatset, neem dan aan dat SpWithOutputID
doet zoiets als dit (retourneert een SELECT
met een enkele rij en enkele kolom):
CREATE PROCEDURE dbo.SpWithOutputID
AS
BEGIN
SET NOCOUNT ON;
SELECT ID = 4;
END
GO
Dan Test1
zou er zo uit kunnen zien:
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
Maar vind je dat niet erg rommelig? Het zou echt zo moeten werken voor enkele, scalaire waarden:
CREATE PROCEDURE dbo.SpWithOutputID
@ID INT OUTPUT
AS
BEGIN
SET NOCOUNT ON;
SELECT @ID = 4;
END
GO
Nu is het veel eenvoudiger om te consumeren wat nu echt een uitvoerparameter is:
CREATE PROCEDURE dbo.Test1
AS
BEGIN
SET NOCOUNT ON;
DECLARE @ID INT;
EXEC dbo.SpWithOutputID @ID = @ID OUTPUT;
SELECT @ID;
END
GO