sql >> Databasteknik >  >> RDS >> Sqlserver

Kan vi skriva en underfunktion eller procedur i en annan lagrad procedur

Jag rekommenderar inte att du gör detta eftersom varje gång det skapas måste en ny genomförandeplan beräknas, men JA, det kan definitivt göras (allt är möjligt, men inte alltid rekommenderat).

Här är ett exempel:

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

Du kommer att få varningen

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.

Du kan kringgå denna varning genom att använda EXEC('sp_helloworld2') ovan.

Men om du ringer EXEC [sp_helloworld] får du resultaten

Hello World
Hello World 2


  1. Hur man väljer data från en tabell från en annan databas i SQL Server?

  2. Ta bort dubbletter av rader från MySql Table

  3. mysql uppdatera flera kolumner med samma nu()

  4. skapa primära och främmande nyckelrelationer