sql >> Database teknologi >  >> RDS >> Sqlserver

Returner outputparameter for en lagret procedure i en anden lagret procedure

Hvis dette slet ikke er et outputparameterproblem, men snarere et resultatsæt, så gæt at SpWithOutputID gør noget som dette (returnerer en SELECT med en enkelt række og enkelt kolonne):

CREATE PROCEDURE dbo.SpWithOutputID
AS
BEGIN
    SET NOCOUNT ON;

    SELECT ID = 4;
END
GO

Derefter Test1 kunne se sådan ud:

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 ikke rigtig rodet ud for dig? Det burde virkelig fungere på denne måde for enkelte, skalære værdier:

CREATE PROCEDURE dbo.SpWithOutputID
    @ID INT OUTPUT 
AS
BEGIN
    SET NOCOUNT ON;

    SELECT @ID = 4; 
END 
GO

Nu er det meget nemmere at forbruge, hvad der virkelig er en outputparameter nu:

CREATE PROCEDURE dbo.Test1
AS
BEGIN
    SET NOCOUNT ON;
    DECLARE @ID INT;

    EXEC dbo.SpWithOutputID @ID = @ID OUTPUT;

    SELECT @ID;
END
GO



  1. Brug af python sqlalchemy til at udføre rå forespørgsler med WITH-sætning

  2. Oracle Identificer datatype

  3. Uønsket resultat fra db:raw

  4. SQL Server Fuzzy Search med procentdel af match