SYS_PROCEDURE_CALL
使用 SYS_PROCEDURE_CALL 视图以获取有关存储过程调用的信息,包括开始时间、结束时间、存储过程调用的状态以及嵌套存储过程调用的调用层次结构。每个存储过程调用接受一个查询 ID。
SYS_PROCEDURE_CALL 对所有用户可见。超级用户可以查看所有行;普通用户只能查看其自己的数据。有关更多信息,请参阅 系统表和视图中的数据可见性。
表列
列名称 | 数据类型 | 描述 |
---|---|---|
session_user_id | 整数 | 用户的标识符,该用户创建了会话并且是顶级存储过程调用的调用方。 |
security_user_id | 整数 | 用户的标识符,该用户的权限用于在存储过程中运行语句。如果存储过程是 DEFINER,则这将是存储过程的拥有者 user_id。 |
query_id | 整数 | 存储过程调用的查询标识符。 |
query_text | char(4000) | 存储过程调用查询的文本。 |
start_time | 时间戳 | 查询开始运行的时间(采用 UTC 表示)。时间戳使用六位数精度表示小数秒,例如:2009-06-12 11:29:19.131358。 |
end_time | 时间戳 | 查询完成运行的时间(采用 UTC 表示)。时间戳使用六位数精度表示小数秒,例如:2009-06-12 11:29:19.131358。 |
status | char(10) | 存储过程调用的状态。当系统停止存储过程或用户取消存储过程时,该值将为已取消。如果存储过程调用运行至完成,则值为成功。 |
caller_procedure_query_id | 整数 | 如果对存储过程调用的调用是由其它存储过程调用执行的,则此列包含外部调用的查询 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)