Om detta inte alls är ett utdataparameterproblem, utan snarare en resultatuppsättning, kan du gissa att SpWithOutputID
gör något så här (returerar en SELECT
med en enda rad och en kolumn):
CREATE PROCEDURE dbo.SpWithOutputID
AS
BEGIN
SET NOCOUNT ON;
SELECT ID = 4;
END
GO
Sedan Test1
kan se ut så här:
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
Men ser det inte riktigt rörigt ut för dig? Det borde verkligen fungera så här för enstaka, skalära värden:
CREATE PROCEDURE dbo.SpWithOutputID
@ID INT OUTPUT
AS
BEGIN
SET NOCOUNT ON;
SELECT @ID = 4;
END
GO
Nu är det mycket enklare att konsumera vad som egentligen är en utdataparameter nu:
CREATE PROCEDURE dbo.Test1
AS
BEGIN
SET NOCOUNT ON;
DECLARE @ID INT;
EXEC dbo.SpWithOutputID @ID = @ID OUTPUT;
SELECT @ID;
END
GO