PL/SQL 知识点总结

一、PL/SQL 程序结构

1、基本块结构

复制代码
DECLARE
  -- 变量声明部分(可选)
BEGIN
  -- 执行部分(必需)
EXCEPTION
  -- 异常处理部分(可选)
END;
/

2、设置输出环境

复制代码
SET SERVEROUTPUT ON;  -- 启用控制台输出

二、变量声明与使用

1、基本变量声明

复制代码
v_student_id VARCHAR2(20) := '20235104163';
v_empno NUMBER(4) := 7521;

2、使用 %TYPE 属性

  • 引用表中列的数据类型

  • 提高代码的可维护性

    v_empno emp.EMPNO%TYPE := 7521;
    v_ename emp.ENAME%TYPE;

3、使用 %ROWTYPE 属性

  • 声明记录变量,包含表的所有列

    v_emp emp%ROWTYPE;

三、数据操作语句

1、表创建

复制代码
CREATE TABLE table_name (
  column1 datatype,
  column2 datatype,
  ...
);

2、数据插入

复制代码
INSERT INTO table_name VALUES (value1, value2, ...);
COMMIT;  -- 提交事务

3、SELECT...INTO 语句

  • 将查询结果赋值给变量

    SELECT column_name INTO variable_name FROM table WHERE condition;

四、控制结构

1、条件判断 - CASE 语句

复制代码
-- 简单CASE语句
CASE expression
  WHEN value1 THEN result1
  WHEN value2 THEN result2
  ELSE default_result
END;

-- 搜索式CASE语句
CASE
  WHEN condition1 THEN result1
  WHEN condition2 THEN result2
  ELSE default_result
END;

2、循环结构 - WHILE 循环

复制代码
WHILE condition LOOP
  statements;
  i := i + 1;  -- 循环控制变量更新
END LOOP;

五、输入输出功能

1、输出语句

复制代码
DBMS_OUTPUT.PUT_LINE('文本内容' || variable);

2、输入功能

  • 使用替换变量 & 接收用户输入

    v_empno := &v_empno;

六、常用函数

1、日期转换

复制代码
TO_DATE('1980-12-17', 'YY-MM-DD')

2、空值处理

复制代码
NVL(expression, replacement_value)
NVL(TO_CHAR(v_emp.COMM), '无')  -- 将NULL转换为'无'

七、重要特性总结

1、强类型语言

  • 所有变量必须声明类型

  • 支持基于表结构的类型引用

2、块结构编程

  • 支持模块化编程

  • 可以在块中声明局部变量

3、数据库集成

  • 可以直接在PL/SQL中执行SQL语句

  • 支持事务控制(COMMIT)

4、错误处理

  • 支持异常处理机制

  • 可以在块中捕获和处理错误

八、编程最佳实践

  1. 使用 %TYPE 和 %ROWTYPE 提高代码的健壮性和可维护性

  2. 及时提交事务 确保数据一致性

  3. 合理处理空值 避免运行时错误

  4. 使用循环控制变量 防止无限循环

  5. 添加适当的输出 便于调试和跟踪

相关推荐
Nturmoils7 小时前
GROUP BY 先别想当然,查汇总前把规则跑清楚
数据库
最笨的羊羊8 小时前
Oceanbase数据库系列之:向量数据库核心知识
数据库·oceanbase
fish_xk8 小时前
mysql中的表的约束
数据库·mysql
谢亮_vipxieliang8 小时前
Go Channel 高级模式——从底层原理到扇出扇入实战
java·数据库·golang
ggaofeng9 小时前
自己编写邮件服务器和客户端
数据库
java1234_小锋9 小时前
【技术专题】Mysql8 数据库 - Mysql8 添加,更新,删除数据
数据库·mysql
PaperData9 小时前
2015-2024年各省绿色贸易数据
数据库
小羊没烦恼!10 小时前
系统内部模块(子系统)之间的耦合以及模块(子系统)划分
java·开发语言·前端·数据库·算法·c#
麦壳饼10 小时前
深入探讨:SonnetDB 的文件格式与存储布局
数据库·sonnetdb
for_ever_love__11 小时前
Redis 持久化讲透:RDB、AOF 与混合持久化怎么选
java·数据库·redis·持久化·aof·区别·rdb