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

Můžeme napsat dílčí funkci nebo proceduru uvnitř jiné uložené procedury

Nedoporučuji to dělat, protože pokaždé, když je vytvořen, musí se vypočítat nový prováděcí plán, ale ANO, rozhodně to lze udělat (Všechno je možné, ale ne vždy se doporučuje).

Zde je příklad:

CREATE PROC [dbo].[sp_helloworld]
AS
BEGIN
    SELECT 'Hello World'
    DECLARE @sSQL VARCHAR(1000)
    SET @sSQL = 'CREATE PROC [dbo].[sp_helloworld2]
            AS
            BEGIN
                SELECT ''Hello World 2''
            END'
    EXEC (@sSQL)

    EXEC [sp_helloworld2];
    DROP PROC [sp_helloworld2];
END

Zobrazí se varování

The module 'sp_helloworld' depends on the missing object 'sp_helloworld2'.
The module will still be created; however, it cannot run successfully until
the object exists.

Toto varování můžete obejít pomocí EXEC('sp_helloworld2') výše.

Ale pokud zavoláte EXEC [sp_helloworld], dostanete výsledky

Hello World
Hello World 2


  1. ORACLE Prohledejte všechny tabulky řetězce pomocí sloupce BLOB

  2. Jak počítat řádky v jedné tabulce na základě jiné tabulky v mysql

  3. T-SQL:Export do nového souboru Excel

  4. Laravel - Querybuilder se spojením a spojením