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

Oprettelse af en brugerdefineret funktion i Stored Procedure i SQL 2005

Teknisk...ja det kunne du, men det betyder ikke, at du skal. Du skal være forsigtig med at undgå GO-sætninger (brug blot Exec for hver batch), men du kan gøre noget som:

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

Når det er sagt, vil jeg stærkt anbefale denne form for løsning, især hvis den funktion, du ønsker, er noget, der ville være nyttig som en Split-funktion. Jeg vil anbefale bare at oprette UDF'en og bruge den og lade den ligge, indtil du måske bruger den igen.



  1. erstatte eksakt match i php

  2. MySql SUM() funktion

  3. PostgreSQL Record Omarrangering ved hjælp af Update with a Sub-Select

  4. Undslippende strenge med python mysql.connector