スレッドについての考慮事項
FENCED として定義されるユーザー定義関数 (UDF) は、その関数を呼び出した SQL ステートメントと同じジョブの中で実行されます。ただし、UDF は、SQL ステートメントを実行しているスレッドとは別のシステム・スレッドの中で実行されます。
UDF は、SQL ステートメントと同じジョブの中で実行されるので、UDF は SQL ステートメントと同じ環境の多くを共用します。ただし、UDF が別のスレッドのもとで実行されるので、スレッドに関する以下の考慮事項が必要になります。
- UDF は、SQL ステートメントのスレッドによって保持されているスレッド・レベルのリソースと対立します。主に、これは、上記の表リソースです。
- UDF は、SQL ステートメントが呼び出されたときに活動状態だったプログラム借用権限を継承しません。UDF の権限は、UDF プログラム自体に関連している権限、または、SQL ステートメントを実行しているユーザーの権限から得られます。
- UDF は、2 次スレッドで実行がブロックされている操作は行えません。