SYS_PROCEDURE_CALL
SYS_PROCEDURE_CALL ビューを使用して、ストアドプロシージャ呼び出しに関する情報として、開始時刻、終了時刻、ストアドプロシージャ呼び出しのステータス、ネストされたストアドプロシージャ呼び出しの呼び出し階層などを取得できます。ストアドプロシージャ呼び出しごとにクエリ ID を受け取ります。
SYS_PROCEDURE_CALL はすべてのユーザーに表示されます。スーパーユーザーはすべての行を表示できますが、通常のユーザーは自分のデータのみを表示できます。詳細については、「システムテーブルとビューのデータの可視性」を参照してください。
テーブルの列
列名 | データ型 | 説明 |
---|---|---|
session_user_id | integer | セッションの作成元であり、最上位ストアドプロシージャ呼び出しの呼び出し元であるユーザーの ID。 |
security_user_id | integer | ストアドプロシージャ内でステートメントを実行するために使用された権限を持つユーザーの ID。ストアドプロシージャが DEFINER の場合、これがストアドプロシージャの所有者 user_id になります。 |
query_id | integer | ストアドプロシージャ呼び出しのクエリ ID。 |
query_text | char(4000) | ストアドプロシージャ呼び出しのクエリのテキスト。 |
start_time | timestamp | クエリの実行が開始した時刻 (UTC)。例えば、タイムスタンプは、秒の小数部に 6 桁の精度を使用します。2009-06-12 11:29:19.131358. |
end_time | timestamp | クエリの実行が終了した時刻 (UTC)。タイムスタンプは、秒の小数部に 6 桁の精度を使用します。例: 2009-06-12 11:29:19.131358。 |
ステータス | char(10) | ストアドプロシージャ呼び出しのステータス。ストアドプロシージャがシステムによって停止されたか、ユーザーによってキャンセルされた場合、値は canceled です。ストアドプロシージャ呼び出しが最後まで実行された場合、値は success です。 |
caller_procedure _query_id | integer | ストアドプロシージャ呼び出しが別のストアドプロシージャ呼び出しによって呼び出された場合、この列は外部呼び出しのクエリ ID になります。それ以外の場合、フィールドは NULL です。 |
サンプルクエリ
次のクエリは、ネストされたストアドプロシージャ呼び出し階層を返します。
select query_id, datediff(seconds, start_time, end_time) as elapsed_time, status, trim(query_text) as call, caller_procedure_query_id from sys_procedure_call;
サンプル出力。
query_id | elapsed_time | status | call | caller_procedure_query_id ----------+--------------+---------+--------------------------------------------------+--------------------------- 3087 | 18 | success | CALL proc_bd906c98c45443ffa165e9552056902d(1) | 3085 3085 | 18 | success | CALL proc_bd906c98c45443ffa165e9552056902d_2(1); | (2 rows)