Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Création d'une fonction définie par l'utilisateur dans une procédure stockée dans SQL 2005

Techniquement... oui vous pourriez mais cela ne veut pas dire que vous devriez. Vous devrez faire attention à éviter les instructions GO (utilisez simplement Exec pour chaque lot), mais vous pouvez faire quelque chose comme :

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

Cela dit, je déconseille fortement ce type de solution, surtout si la fonction que vous voulez est quelque chose qui serait utile comme une fonction Split. Je recommanderais simplement de créer l'UDF et de l'utiliser et de le laisser jusqu'à ce que vous puissiez l'utiliser à nouveau.