当前位置: 首页 > 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)
  • 壹基金发布2024年度报告,公益项目惠及937万人次
  • 比特币价格时隔三个月再度站上10万美元
  • 习近平同俄罗斯总统普京茶叙
  • 司法部:加快研究制定行政执法监督条例,建立完善涉企行政执法监督长效机制
  • 视频丨习近平主席专机抵达莫斯科,俄战机升空护航
  • 售卖自制外挂交易额超百万元,一男子因提供入侵计算机系统程序被抓