sql >> Databáze >  >> RDS >> Sqlserver

Vraťte výstupní parametr uložené procedury uvnitř jiné uložené procedury

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



  1. funkce mysql v nástroji pro tvorbu dotazů v laravel

  2. Jaký je nejúčinnější způsob, jak přetrvat tisíce subjektů?

  3. Co se stane, když pošlu booleovskou hodnotu True-False do příkazu PDO jako parametr, který je vázán na pole int?

  4. Hodnocení MySQL s hmotností