postgresql 函数调试
1. 使用 plpgsql
的调试功能
如果你的函数是用 plpgsql
(PostgreSQL 的过程语言)编写的,你可以利用内置的调试功能。这包括使用 RAISE
语句来输出信息,以及设置断点。
CREATE OR REPLACE FUNCTION test_function() RETURNS void AS $$
BEGIN
RAISE NOTICE 'Starting function';
-- 你的代码逻辑
RAISE NOTICE 'Function completed';
END;
$$ LANGUAGE plpgsql;
设置断点
虽然 plpgsql
不像某些高级编程语言那样直接支持断点,但你可以通过在代码中巧妙地放置 RAISE
语句来模拟这一过程:
CREATE OR REPLACE FUNCTION test_function() RETURNS void AS $$
BEGIN
RAISE NOTICE 'At start';
-- 你的代码逻辑
RAISE NOTICE 'Before critical section';
-- 你的代码逻辑(关键部分)
RAISE NOTICE 'After critical section';
-- 你的代码逻辑
RAISE NOTICE 'Function completed';
END;
$$ LANGUAGE plpgsql;
当然我们PostgreSQL 也有相应的函数 RAISE NOTICE 'This is a log %', param;
% 占位符 param 替换的值
do $g$
DECLAREv_job_id int := 100;
BEGINRAISE NOTICE 'Calling cs_create_job(%)', v_job_id;
END;
$g$;
postgres=# do $g$
postgres$# DECLARE
postgres$# v_job_id int := 100;
postgres$# BEGIN
postgres$# RAISE NOTICE 'Calling cs_create_job(%)', v_job_id;
postgres$# END;
postgres$# $g$;
NOTICE: Calling cs_create_job(100)
DO