sql >> データベース >  >> RDS >> Sqlserver

SQLServerでテーブル値関数を変更する

    ALTER FUNCTIONを使用して、SQL Serverのテーブル値関数(TVF)を変更できます。 T-SQL構文。

    ALTER FUNCTIONに従うだけです 新しい定義で。基本的には、CREATE FUNCTIONを使用するようなものです。 CREATEを置き換える場合を除きます ALTERを使用 。

    デモンストレーションの例を次に示します。

    ALTER FUNCTION dbo.udf_CatsByName_ITVF( @CatName varchar(70) )
        RETURNS TABLE
        WITH SCHEMABINDING
    AS
    RETURN (
        SELECT 
            CatId,
            CatName,
            Phone
        FROM dbo.Cats
        WHERE CatName = @CatName
        );
    
    GO
    

    この関数がまだ存在せず、初めて作成する場合は、次のコードを使用します。

    CREATE FUNCTION dbo.udf_CatsByName_ITVF( @CatName varchar(70) )
        RETURNS TABLE
        WITH SCHEMABINDING
    AS
    RETURN (
        SELECT 
            CatId,
            CatName,
            Phone
        FROM dbo.Cats
        WHERE CatName = @CatName
        );
    
    GO
    

    CREATEで始まることを除けば、まったく同じです。 ALTERの代わりに 。

    ドロップして再作成

    これを行う別の方法は、関数を削除して再作成することです。

    DROP FUNCTION IF EXISTS udf_CatsByName_ITVF;
    GO
    
    CREATE FUNCTION dbo.udf_CatsByName_ITVF( @CatName varchar(70) )
        RETURNS TABLE
        WITH SCHEMABINDING
    AS
    RETURN (
        SELECT 
            CatId,
            CatName,
            Phone
        FROM dbo.Cats
        WHERE CatName = @CatName
        );
    
    GO
    

    この場合、DIE構文(Drop If Exists)を使用しました。これは、オブジェクトをドロップする前にオブジェクトがまだ存在していなくてもエラーが発生しないことを意味します。

    インラインTVFとマルチステートメントTVF

    このページの例では、インラインのテーブル値関数を使用しています。同じ概念がマルチステートメントTVFにも当てはまります。

    それぞれの詳細な例については、インラインテーブル値関数の作成とマルチステートメントテーブル値関数の作成を参照してください。


    1. 別の列に基づくPostgreSQLシーケンス

    2. 複数のテーブルからのSQLINSERTINTO

    3. Node.jsでSequelizeを使用して結合クエリを作成する方法

    4. SQLServerインスタンス上のすべてのデータベースから主キー制約のリストを取得する方法-SQLServer/TSQLチュートリアルパート60