ユーザー定義関数の実行

適用対象:SQL ServerAzure 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

関連項目