Oracle学习__04:ORACLE 编程
发布日期:2021-04-30 21:01:21 浏览次数:118 分类:精选文章

本文共 1590 字,大约阅读时间需要 5 分钟。

Oracle 学习__04:ORACLE 编程

本文基于黑马程序员视频教程进行整理记录,仅用于个人学习/交流使用

视频地址:https://www.bilibili.com/video/BV1KJ411h7NH
官方资料:https://pan.baidu.com/s/1mODcXmqHh54gas4U0CxoTg 提取码:zugy


目录

一、PL/SQL

(一)什么是 PL/SQL

PL/SQL(Procedure Language/SQL)是 Oracle 对 SQL 语言的过程化扩展,提供了过程处理能力。它结合了 SQL 的数据操纵能力与过程语言的数据处理能力,适合复杂数据处理需求。

(二)变量

  • 声明变量语法变量名 类型(长度);
  • 赋值语法变量名 := 变量值
  • 示例:声明并赋值水费单价、字数、吨数、金额,并计算金额。

(三)属性类型

  • 引用型%TYPE引用表字段的数据类型。
  • 记录型:使用 %ROWTYPE 表示表的记录类型。

(四)异常

  • 预定义异常:Oracle 提供 21 个预定义异常。
  • 用户定义异常:使用 RAISE 显式引发异常。
  • 异常处理语法exception when 异常类型 then 异常处理逻辑

(五)条件判断

  • 基本语法if 条件 then 业务逻辑 else 业务逻辑 end if;
  • 阶梯水费计算:根据吨数设置不同单价,实现阶梯收费。

(六)循环

  • 无条件循环loopend loop;
  • 条件循环while 条件
  • for 循环for 变量 in 起始值..终止值 loop

(七)游标

  • 定义游标cursor 游标名称 is SQL 语句;
  • 使用游标openfetchclose
  • 案例:查询业主类型为 1 的价格表,并通过游标打印结果。

二、存储函数

(一)存储函数

存储函数是可接收参数并返回结果的自定义函数,常用于封装数据库查询逻辑。

(二)存储函数语法

  • 创建语法CREATE [OR REPLACE] FUNCTION 函数名称(参数名 类型, ...)返回数据类型 IS
  • 示例:创建查询地址名称的存储函数,并测试其调用。

(三)存储函数案例

  • 查询业主信息SELECT id 编号, name 业主名称, fn_getaddress(addressid) 地址 FROM t_owners

三、存储过程

(一)存储过程

存储过程是封装数据库操作逻辑的 PL/SQL 块,常用于调用复杂业务逻辑。

(二)存储过程语法

  • 创建语法CREATE [OR REPLACE] PROCEDURE 存储过程名称(参数名 类型, ...)IS
  • 参数模式IN(传入)、OUT(传出)、IN OUT(传入传出)

(三)存储过程案例

  • 增加业主信息:创建不带传出参数的存储过程,调用示例。
  • 带传出参数的存储过程:通过传出参数返回新增 ID,调用示例。

四、触发器

(一)触发器

触发器是与表相关联的 PL/SQL 程序,自动执行在特定数据操作时定义的逻辑。

(二)触发器分类

  • 前置触发器BEFORE
  • 后置触发器AFTER

(三)触发器案例

  • 前置触发器:计算本月使用水费,并更新吨数。
  • 后置触发器:记录业主信息修改前后的日志。

五、综合案例

1. 计算阶梯水费

  • 需求:水费单价为阶梯计算,12 吨的水费。
  • 思路:通过游标查询价格表,计算各阶梯的水费并累加。

2. 存储函数实现阶梯水费

  • 函数逻辑:遍历价格表,计算每阶梯的水费并返回总金额。

3. 触发器自动计算水费

  • 触发器逻辑:在更新吨数时,自动调用存储函数计算水费。

4. 存储过程综合案例

  • 需求:在增加业主信息时,自动在账务表中记录对应数据。
  • 函数逻辑:使用 TO_CHAR 获取年月,通过地址 ID 查询区域信息,并插入数据。

作者:耿鬼不会笑

时间:2021年1月

上一篇:ps制作磨皮效果
下一篇:maven多环境打包配置

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2026年06月20日 20时52分34秒