手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

Postgresql使用PL/pgSQL语言建立存储过程

时间:2024-10-14 16:35:23

1、我们殂翼瑟擀实现一个简单的存储过程p_user_check(p_username varchar, p_passwd varchar)验证传入的密码是否正确.传入参数为用户名p_username和用户密码p_passwd(数据库存储的应为加密过的密码),返回结果: 0 - 验证成功, -1 - 用户不存在 -2 - 密码错误 -99 - 程序异常

2、psql进入测试数据库,创建测试schema和测试表users(用户表,包含用户名,用户密码),插入一条数据。用户名: hehehehehe 密码:123 (仅测试用)

Postgresql使用PL/pgSQL语言建立存储过程

3、进入文本sublime_text,编写存储过程脚本。为保证脚本能多次运行而不影响数据库正常运行,如果在存储过程已存在的情况下先删除再建立。DROP FUNCTION IF EXISTS schema_a.user_check(varchar, varchar);

Postgresql使用PL/pgSQL语言建立存储过程

4、创建function语法官方说明见图

Postgresql使用PL/pgSQL语言建立存储过程

5、创建p_user_checkCREATE OR REPLACE FUNCTION schema_a.user忧溲枷茫_check(p_username varchar, p_password varchar)RETURNS int AS $$ -- $$需要后最后$$配对,可以任意取名,如$BODY$DECLARE -- 变量申明 _passwd varchar; _out_code int := -99; -- 申明时可赋初始值BEGIN -- 开始 SELECT password INTO _passwd FROM schema_a.users WHERE name = p_username; if found then if _passwd = p_password then _out_code := 0; else _out_code := -2; end if; else _out_code := -1; -- user not exists end if; return _out_code;EXCEPTION WHEN OTHERS THEN --异常处理 raise notice 'exception in user_check: %, %', SQLSTATE, SQLERRM; return _out_code;END; --结束$$LANGUAGE plpgsql STABLE SECURITY DEFINER;保存为/home/kian.gao/Desktop/user_check.sql在psql中执行脚本\i /home/kian.gao/Desktop/user_check.sql

Postgresql使用PL/pgSQL语言建立存储过程

6、验证存储过程正确性

Postgresql使用PL/pgSQL语言建立存储过程
© 手抄报圈