sql >> Databasteknik >  >> RDS >> Sqlserver

Returnera utdataparametrar för en lagrad procedur i en annan lagrad procedur

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



  1. SQL VIEW

  2. hur man sätter in långsträngad orakelklump eller klump

  3. mysql innodb:beskriv tabellen visar inte kolumnreferenser, vad visar dem?

  4. Hur man returnerar en lista över områden som stöds i Oracle