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

 时间:2026-02-12 00:38:50

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_check

CREATE 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语言建立存储过程

  • 如何使用plsql连接oracle12c并创建同义词
  • VBA中的内置函数的使用教程
  • windows下ora-12560的解决方法
  • 台式电脑如何启用ActiveX Installer (AxInstSV)
  • js如何判断ie浏览器
  • 热门搜索
    怎么在网上买东西 lol怎么窗口化 电脑自动更新怎么关闭 大学物理公式大全 冰火两重天怎么玩 广场舞曲歌曲大全100首 蛇图片大全 星座运势大全 蘑菇图片大全 空白名字怎么打