ユーザー定義関数の実行

適用対象:データベースのSQL Server (サポートされているすべてのバージョン) Azure SQL

Transact-SQL を使用してユーザー定義関数を実行する

制限事項と制約事項

Transact-SQL では、値を使用するか、@parameter_name=を使用してパラメーターを指定できますパラメーターはトランザクションの一部ではありません。したがって、後でロールバックされるトランザクションでパラメーターが変更された場合、パラメーターの値は前の値に戻りません。 呼び出し元に返される値は常に、モジュールから戻る時点での値になります。

アクセス許可

EXECUTE ステートメントを実行するためにアクセス許可は必要ありません。 EXECUTE 文字列内で参照されるセキュリティ保護可能なリソースに対しては権限が 必要です 。 たとえば、この文字列に INSERT ステートメントが含まれている場合、EXECUTE ステートメントの呼び出し元は対象のテーブルに対する INSERT 権限が必要です。 EXECUTE ステートメントは、モジュール内に含まれている場合でも、検出されるたびに権限が確認されます。 詳細については、EXECUTE (Transact-SQL) を参照してください。

Transact-SQL の使用

この例では、 ufnGetSalesOrderStatusText のほとんどのエディションで利用できる AdventureWorksスカラー値関数を使用しています。 この関数の目的は、所与の整数から売り上げ状況のテキスト値を返すことです。 パラメーターに整数 1 から 7 を渡して、例を @Status 変更します。

USE [AdventureWorks2016CTP3]
GO

-- Declare a variable to return the results of the function.
DECLARE @ret nvarchar(15);

-- Execute the function while passing a value to the @status parameter
EXEC @ret = dbo.ufnGetSalesOrderStatusText @Status = 5;

-- View the returned value.  The Execute and Select statements must be executed at the same time.
SELECT N'Order Status: ' + @ret;

-- Result:
-- Order Status: Shipped

関連項目