在Ubuntu系统上,需先完成pgAdmin的安装与环境配置,才能通过图形界面编写存储过程。
pgAdmin是PostgreSQL的管理工具,需先安装PostgreSQL:
sudo apt update
sudo apt install postgresql postgresql-contrib
安装完成后,设置PostgreSQL用户的密码(默认用户为postgres):
sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD 'your_password';"
pgAdmin 4提供Web界面,便于远程管理。推荐通过pip安装(需Python 3.6+):
sudo apt install python3-pip libpq-dev python-dev libffi-dev
pip3 install pgadmin4
初始化pgAdmin配置(首次运行需设置管理员密码):
pgadmin4
启动后,在浏览器中访问http://localhost:5050,使用设置的管理员密码登录。
Local PostgreSQL)。localhost(本地服务器)或PostgreSQL服务器IP;5432(默认端口);postgres(默认管理员用户);postgres用户密码。pgAdmin通过Query Tool(查询工具)编写和执行SQL语句,包括存储过程的创建与管理。
Local PostgreSQL)。postgres)。以下以创建带输入/输出参数的存储过程为例,演示语法与步骤:
-- 创建无参数存储过程,输出"Hello, PL/pgSQL!"
CREATE OR REPLACE PROCEDURE say_hello()
LANGUAGE plpgsql
AS $$
BEGIN
RAISE NOTICE 'Hello, PL/pgSQL!';
END;
$$;
CREATE OR REPLACE PROCEDURE用于创建或替换存储过程;LANGUAGE plpgsql指定过程语言为PL/pgSQL(PostgreSQL默认支持);RAISE NOTICE用于输出提示信息。-- 创建带输入参数(a, b)和输出参数(result)的存储过程,计算两数之和
CREATE OR REPLACE PROCEDURE add_numbers(
IN a INTEGER,
IN b INTEGER,
OUT result INTEGER
)
LANGUAGE plpgsql
AS $$
BEGIN
result := a + b;
END;
$$;
IN表示输入参数(向过程传递值),OUT表示输出参数(从过程返回值);result := a + b为过程逻辑,将a与b的和赋值给result。-- 创建带条件判断的存储过程,根据输入值输出不同提示
CREATE OR REPLACE PROCEDURE check_number(
IN num INTEGER
)
LANGUAGE plpgsql
AS $$
BEGIN
IF num > 0 THEN
RAISE NOTICE 'The number is positive.';
ELSIF num < 0 THEN
RAISE NOTICE 'The number is negative.';
ELSE
RAISE NOTICE 'The number is zero.';
END IF;
END;
$$;
IF-ELSIF-ELSE结构用于条件判断,根据num的值输出不同提示。-- 创建带循环的存储过程,输出1~10的整数
CREATE OR REPLACE PROCEDURE print_numbers()
LANGUAGE plpgsql
AS $$
DECLARE
i INTEGER := 1;
BEGIN
LOOP
RAISE NOTICE 'Current number: %', i;
i := i + 1;
EXIT WHEN i > 10; -- 循环终止条件
END LOOP;
END;
$$;
LOOP-END LOOP结构用于循环执行代码;EXIT WHEN用于指定循环终止条件。F5),执行代码。存储过程创建后,需通过CALL语句调用:
CALL say_hello();
执行后,pgAdmin会输出NOTICE: Hello, PL/pgSQL!\n。
-- 调用add_numbers存储过程,获取两数之和
CALL add_numbers(5, 3, NULL);
NULL为占位符,表示忽略输入参数(若无输入参数可省略);实际使用时,可通过变量接收输出值(如在psql中使用DO块或应用程序代码)。CALL check_number(-10);
执行后,pgAdmin会输出NOTICE: The number is negative.\n。
CALL print_numbers();
执行后,pgAdmin会依次输出Current number: 1至Current number: 10的提示。
在pgAdmin左侧导航栏中,展开目标数据库→Schemas→public→Procedures,即可查看所有存储过程。右键点击存储过程,可选择Properties查看详情或Delete删除。
若需修改存储过程,可直接在Query Tool中重新编写CREATE OR REPLACE PROCEDURE语句(注意保留原过程的参数与逻辑),然后执行。
pgAdmin暂不支持直接调试存储过程,但可通过以下方式排查问题:
RAISE NOTICE输出变量值(如RAISE NOTICE 'Variable value: %', variable_name;);CREATE权限,若无权限需联系管理员。ROLLBACK回滚事务;若需提交事务,可使用COMMIT(需显式声明)。通过以上步骤,即可在Ubuntu系统上使用pgAdmin编写、执行和管理PostgreSQL存储过程。存储过程能有效减少网络传输、提高性能,并增强代码的可重用性,适用于复杂业务逻辑的封装。