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. MySQLにあるテーブルの数を数えるためのクエリ

    2. 2つの条件に一致する複数の行を選択します

    3. SQL Server 2008に対して実行すると、SqlDataReader.HasRowsにバグがありますか?

    4. PHPからmySQLに、ユーザーが存在するかどうかを確認します