ユーザー定義関数の実行
適用対象:SQL Server
Azure SQL Database
Transact-SQL を使用してユーザー定義関数を実行する
制限事項と制約事項
Transact-SQL では、パラメーターは、value または @parameter_name=value. を使用して指定できます。パラメーターはトランザクションの一部ではないため、トランザクションでパラメーターが変更され、後でロールバックされても、パラメーターの値を前の値に戻すことはできません。 呼び出し元に返される値は常に、モジュールから戻る時点での値になります。
アクセス許可
EXECUTE ステートメントの実行に権限は必要ありませんが、 EXECUTE 文字列内で参照されるセキュリティ保護可能なリソースに対しては権限が 必要です 。 たとえば、この文字列に INSERT ステートメントが含まれている場合、EXECUTE ステートメントの呼び出し元は対象のテーブルに対する INSERT 権限が必要です。 EXECUTE ステートメントは、モジュール内に含まれている場合でも、検出されるたびに権限が確認されます。 詳細については、「EXECUTE (Transact-SQL)」を参照してください。
Transact-SQL の使用
この例では、 ufnGetSalesOrderStatusText
のほとんどのエディションで利用できる AdventureWorks
スカラー値関数を使用しています。 この関数の目的は、所与の整数から売り上げ状況のテキスト値を返すことです。 @Status
パラメーターに 1 ~ 7 の整数を渡すことで例を変えられます。
USE [AdventureWorks2022]
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