Se questo non è affatto un problema con un parametro di output, ma piuttosto un set di risultati, allora supponiamo che SpWithOutputID
fa qualcosa del genere (restituisce un SELECT
con una sola riga e una sola colonna):
CREATE PROCEDURE dbo.SpWithOutputID
AS
BEGIN
SET NOCOUNT ON;
SELECT ID = 4;
END
GO
Quindi Test1
potrebbe assomigliare a questo:
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
Ma non ti sembra davvero disordinato? Dovrebbe davvero funzionare in questo modo per valori scalari singoli:
CREATE PROCEDURE dbo.SpWithOutputID
@ID INT OUTPUT
AS
BEGIN
SET NOCOUNT ON;
SELECT @ID = 4;
END
GO
Ora è molto più semplice consumare quello che è davvero un parametro di output ora:
CREATE PROCEDURE dbo.Test1
AS
BEGIN
SET NOCOUNT ON;
DECLARE @ID INT;
EXEC dbo.SpWithOutputID @ID = @ID OUTPUT;
SELECT @ID;
END
GO