Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Създаване на дефинирана от потребителя функция в съхранена процедура в SQL 2005

Технически... да, бихте могли, но това не означава, че трябва. Трябва да внимавате да избягвате GO изрази (просто използвайте Exec за всяка партида), но можете да направите нещо като:

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

Въпреки това, аз силно бих препоръчал да не използвате този вид решение, особено ако функцията, която искате, е нещо, което би било полезно като Split функция. Бих препоръчал просто да създадете UDF и да го използвате и да го оставите, докато не го използвате отново.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да намерите елемент от списък на определена позиция в SQL Server

  2. Нулиране на първичен ключ (int като самоличност)

  3. SQL Как да зададете правилно стойност на променлива за дата и да я използвате?

  4. Грешка при закръгляване на SQL Server, даване на различни стойности

  5. Как да промените първичния ключ да не е клъстериран?