Pokud se ve skutečnosti nejedná o problém s výstupním parametrem, ale spíše o sadu výsledků, pak odhadněte, že SpWithOutputID
udělá něco takového (vrací SELECT
s jedním řádkem a jedním sloupcem):
CREATE PROCEDURE dbo.SpWithOutputID
AS
BEGIN
SET NOCOUNT ON;
SELECT ID = 4;
END
GO
Poté Test1
může vypadat takto:
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
Ale nezdá se vám to opravdu špinavé? Opravdu by to mělo fungovat tímto způsobem pro jednotlivé skalární hodnoty:
CREATE PROCEDURE dbo.SpWithOutputID
@ID INT OUTPUT
AS
BEGIN
SET NOCOUNT ON;
SELECT @ID = 4;
END
GO
Nyní je mnohem jednodušší používat to, co je nyní skutečně výstupním parametrem:
CREATE PROCEDURE dbo.Test1
AS
BEGIN
SET NOCOUNT ON;
DECLARE @ID INT;
EXEC dbo.SpWithOutputID @ID = @ID OUTPUT;
SELECT @ID;
END
GO