Oracle:什么是存储过程

Oracle 里,存储过程(Procedure)是 一组 SQL 语句的封装,可以在数据库中保存,并在需要时直接调用,避免重复编写 SQL 代码。

存储过程的主要作用:

  • 批量操作(如批量插入、批量更新)
  • 封装业务逻辑
  • 提高 SQL 复用性
  • 减少数据库与应用程序的交互次数,提高性能

假设我们有一个 students 表:

复制代码
CREATE TABLE students (
    id NUMBER PRIMARY KEY,
    name VARCHAR2(50),
    age NUMBER
);

现在要创建一个存储过程

  1. 插入多条学生数据
  2. 每次执行都会插入固定的 3 条记录
  3. 提交(COMMIT)保证数据写入数据库
sql 复制代码
CREATE OR REPLACE PROCEDURE student_batch_insert
AS
BEGIN
    INSERT INTO students (id, name, age) VALUES (1, 'Alice', 20);
    INSERT INTO students (id, name, age) VALUES (2, 'Bob', 22);
    INSERT INTO students (id, name, age) VALUES (3, 'Charlie', 21);
    COMMIT; -- 提交事务,确保数据永久存储
END;
/

如何运行这个过程?

创建存储过程后,可以用 BEGIN ... END; 语句来调用它:

sql 复制代码
BEGIN
    student_batch_insert;
END;
/

上面的存储过程每次执行都会插入固定的数据 ,但如果我们希望传入不同的数据 ,可以使用参数

sql 复制代码
CREATE OR REPLACE PROCEDURE student_batch_insert(
    v_id NUMBER, 
    v_name VARCHAR2, 
    v_age NUMBER
)
AS
BEGIN
    INSERT INTO students (id, name, age) VALUES (v_id, v_name, v_age);
    COMMIT;
END;
/

这样,执行时可以传入不同的数据

sql 复制代码
BEGIN
    student_batch_insert(4, 'David', 23);
END;
/

存储过程 就是 数据库端的函数,用于封装 SQL 逻辑,避免重复编写 SQL 代码。

CREATE OR REPLACE PROCEDURE 用于 创建或更新存储过程 ,而 BEGIN ... END; 用于 执行存储过程

相关推荐
王会举1 小时前
让SQL飞起来:搭建企业AI应用的SQL性能优化实战
数据库·人工智能·ai·性能优化
bing_1581 小时前
在 Spring Boot 项目中,如何进行高效的数据库 Schema 设计?
数据库·spring boot·后端·数据库schema设计
听雪楼主.1 小时前
Oracle补丁安装工具opatch更新报错处理
数据库·oracle
不吃元西1 小时前
对于客户端数据存储方案——SQLite的思考
数据库·sqlite
rgb0f01 小时前
MySQL视图相关
数据库·mysql·oracle
编程、小哥哥1 小时前
oracle值sql记录
数据库·sql·oracle
三千花灯1 小时前
jmeter提取返回值到文件
数据库·jmeter
萧离1952 小时前
超细的Linux安装minio教学
数据库
小吕学编程2 小时前
基于Canal+Spring Boot+Kafka的MySQL数据变更实时监听实战指南
数据库·后端·mysql·spring·kafka
一个小白5552 小时前
Linux,redis群集模式,主从复制,读写分离
linux·运维·数据库·centos