Wenn dies überhaupt kein Problem mit Ausgabeparametern ist, sondern eher eine Ergebnismenge, dann raten Sie, dass SpWithOutputID
macht so etwas (gibt ein SELECT
zurück mit einer einzigen Zeile und einer einzigen Spalte):
CREATE PROCEDURE dbo.SpWithOutputID
AS
BEGIN
SET NOCOUNT ON;
SELECT ID = 4;
END
GO
Dann Test1
könnte so aussehen:
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
Aber sieht das nicht wirklich chaotisch für Sie aus? Für einzelne, skalare Werte sollte es wirklich so funktionieren:
CREATE PROCEDURE dbo.SpWithOutputID
@ID INT OUTPUT
AS
BEGIN
SET NOCOUNT ON;
SELECT @ID = 4;
END
GO
Jetzt ist es viel einfacher zu konsumieren, was jetzt wirklich ein Ausgabeparameter ist:
CREATE PROCEDURE dbo.Test1
AS
BEGIN
SET NOCOUNT ON;
DECLARE @ID INT;
EXEC dbo.SpWithOutputID @ID = @ID OUTPUT;
SELECT @ID;
END
GO