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

Creazione di una funzione definita dall'utente in Stored procedure in SQL 2005

Tecnicamente... sì, potresti, ma ciò non significa che dovresti. Dovresti stare attento a evitare le istruzioni GO (usa semplicemente Exec per ogni batch) ma potresti fare qualcosa del tipo:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE dbo.Test
AS

Declare @Sql nvarchar(max)

Set @Sql = 'CREATE FUNCTION dbo.Foo
(   
)
RETURNS TABLE 
AS
RETURN 
(
    SELECT 0 As Bar
)'

Exec(@Sql)

Select * 
From dbo.Foo()


Set @Sql = 'Drop Function dbo.Foo'
Exec(@Sql)

Return
GO
Exec dbo.Test

Detto questo, sconsiglio vivamente questo tipo di soluzione, soprattutto se la funzione che si desidera è qualcosa che sarebbe utile come una funzione Dividi. Consiglierei semplicemente di creare l'UDF e di usarlo e di lasciarlo fino a quando non potresti usarlo di nuovo.