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

Vytvoření uživatelem definované funkce v uložené proceduře v SQL 2005

Technicky... ano, můžete, ale to neznamená, že byste měli. Měli byste být opatrní, abyste se vyhnuli příkazům GO (stačí použít Exec pro každou dávku), ale můžete udělat něco jako:

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

To znamená, že bych důrazně doporučil proti tomuto druhu řešení, zvláště pokud požadovaná funkce je něco, co by bylo užitečné jako funkce Split. Doporučil bych pouze vytvořit UDF a použít jej a nechat jej, dokud jej nebudete moci znovu použít.



  1. Jak strukturovat data kategorií v databázi?

  2. Jak odesílat e-maily ze serveru SQL (T-SQL)

  3. Oracle dotaz Řetězec včetně znaku pomlčky

  4. Nahrazení kurzorů SQL alternativami, abyste se vyhnuli problémům s výkonem