当前位置: 首页 > news >正文

PostgreSQL 存储过程

简介

PostgreSQL 中的存储过程(Stored Procedure)是一种在数据库中定义的可重复使用的程序单元,用于封装复杂的业务逻辑和数据处理操作

示例

简单示例

  • 创建存储过程
CREATE PROCEDURE insert_users (user_account TEXT, hashed_password TEXT) LANGUAGE plpgsql AS $$
BEGIN
  INSERT INTO users (user_account, hashed_password)
  VALUES
  (user_account, hashed_password);
END $$;
  • 调用
CALL insert_users(value1, value2);

事务控制

CREATE PROCEDURE update_salary(emp_id INT, new_salary NUMERIC)
LANGUAGE plpgsql
AS $$
BEGIN
    UPDATE employees SET salary = new_salary WHERE id = emp_id;
    
    -- 如果工资小于 0,则回滚事务
    IF new_salary < 0 THEN
        ROLLBACK;
    ELSE
        COMMIT;
    END IF;
END;
$$;

循环

CREATE PROCEDURE insert_multiple_employees()
LANGUAGE plpgsql
AS $$
DECLARE
    i INT := 1;
BEGIN
    WHILE i <= 5 LOOP
        INSERT INTO employees (name, salary) VALUES ('Employee_' || i, i * 1000);
        i := i + 1;
    END LOOP;
END;
$$;

带输入和输出参数

CREATE PROCEDURE get_employee_salary(IN emp_id INT, OUT emp_salary NUMERIC)
LANGUAGE plpgsql
AS $$
BEGIN
    SELECT salary INTO emp_salary FROM employees WHERE id = emp_id;
END;
$$;

删除存储过程

DROP PROCEDURE xxxxx(TEXT, NUMERIC);

相关文章:

  • manacher 算法详解
  • Vulnhub靶机:Web Machine(N7)
  • 外贸网络专线推荐——SD-WAN灵活且高效!
  • 蓝桥杯练习day3:反转字符串II
  • 从“制造”到“智造”,看中集“灯塔”生产线与永洪“数据技术”的紧密融合
  • CentOS 7.9 安装 Python 3.10 详细步骤及常见问题解决
  • FPGA 以太网通信(一)
  • java常用数据转换
  • 软件设计师笔记持续更新-看学以致知视频笔记
  • 中微单片机学习--SC8F072
  • 【蓝桥杯速成】| 8.回溯算法
  • C语言 第五章 指针(3)
  • 实用工具-Another Redis Desktop Manager介绍
  • electron桌面应用多种快速创建方法
  • 如何通过Odoo 18创建与配置服务器操作
  • 楼宇自控系统的结构密码:总线与分布式结构方式的差异与应用
  • Jackson 库进行 JSON 序列化时遇到了 ‌无限递归(Infinite Recursion)‌ 问题
  • 嵌入式笔记 | 正点原子STM32F103ZET6 5 | 串口通信
  • kafka的文章
  • C#从入门到精通(1)
  • 俄罗斯称已收复库尔斯克州
  • 青年如何打破“千人一面”,创造属于自己的文化观?
  • 锚定“双一流”战略坐标,福建农林大学向全球英才“伸出橄榄枝”
  • 苏炳添任暨南大学体育学院院长
  • 长三角数智文化产业基金意向签约会成功举办
  • 哈工大赵杰:人形机器人要拓展人的能力而非一味复制,未来产业要做成至少10年