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. 添加适当的输出 便于调试和跟踪

相关推荐
小短腿的代码世界17 分钟前
Qt国际化深度解析:从源码到企业级多语言实践
java·数据库·qt
Ting-yu22 分钟前
Spring AI Alibaba零基础速成(6) ---- 向量化
数据库·人工智能
dishugj38 分钟前
HANA性能分析视图
数据库
l1t1 小时前
DeepSeek总结的在 DuckDB 中试驾 Lance 数据湖仓格式
数据库·人工智能·机器学习·duckdb
PaperData2 小时前
2017-2025年中国10米分辨率土地利用/覆盖栅格数据(from Esri LULC)
数据库·数据分析·学习方法
小二·2 小时前
LangGraph 多智能体实战:从零搭建 Multi-Agent 协作系统
java·开发语言·数据库
羑悻的小杀马特2 小时前
工业时序数据选型的几点思考:从存储成本与查询延迟说起
数据库·人工智能
小旭95272 小时前
商品详情实现与缓存问题(穿透、击穿、雪崩)解决方案
java·数据库·spring boot·后端·缓存
zgscwxd2 小时前
MySQL 远程访问并结合花生壳实现外网穿透
sql
我本楚狂人www3 小时前
Spring 两大核心思想(一):IoC
java·数据库·spring