更新时间:2026-07-28 GMT+08:00
分享

操作指导

前提条件

需要开启track_activities和track_procedure_sql参数,参数值都设置为on。

语法

不涉及。

注意事项

pg_stat_activity系统视图中query字段显示长度受GUC参数track_activity_query_size控制,默认1024字节,语句过长会被截断显示不完整。

示例

-- 创建存储过程,可参考如下示例
gaussdb=# CREATE OR REPLACE PROCEDURE p1()
AS
BEGIN
pg_sleep(2);
END;
/
CREATE PROCEDURE
gaussdb=# CREATE OR REPLACE PROCEDURE p2()
AS
BEGIN
pg_sleep(2);
END;
/
CREATE PROCEDURE
gaussdb=# CREATE OR REPLACE PROCEDURE p3()
AS
BEGIN
p1();
p2();
END;
/
CREATE PROCEDURE
gaussdb=# CREATE OR REPLACE PROCEDURE p4()
AS
BEGIN
p1();
p2();
END;
/
CREATE PROCEDURE
gaussdb=# CREATE OR REPLACE PROCEDURE p5()
AS
BEGIN
p3();
p4();
END;
/
CREATE PROCEDURE
-- 会话A,调用存储过程
gaussdb=# CALL p5();
-- 会话B,在会话A执行期间查看是会话A正在执行的SQL,等会话A执行完成后查看语句信息,是会话A执行的上一条会被记录下来的语句。
gaussdb=# SELECT query FROM pg_stat_activity WHERE query LIKE '%call%' AND sessionid != pg_current_sessid();
                                          query
------------------------------------------------------------------------------------------
 query string: call p5();, current level: p2(), lineno: 3, execute stmt: CALL pg_sleep(2)
(1 row)

相关文档