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

相关推荐
小白学大数据3 分钟前
Redis 在定时增量爬虫中的去重机制与过期策略
开发语言·数据库·redis·爬虫
方璧3 分钟前
ETCD注册中心
数据库·学习·etcd
week_泽9 分钟前
百战商城商品数据云函数化改造总结_百战_3
数据库·笔记·微信小程序·小程序
爱吃提升13 分钟前
Python 使用 MySQL 数据库进行事务处理步骤
数据库·python·mysql
Antoine-zxt13 分钟前
深入解析MySQL事务ACID:从理论到实践的完整指南
数据库·mysql·oracle
7ioik14 分钟前
什么是版本链?
数据库·mysql
手握风云-14 分钟前
MySQL数据库精研之旅第二十期:存储过程,数据处理的全能工具箱(三)
数据库·mysql
2509_9408802219 分钟前
MySQL Workbench菜单汉化为中文
android·数据库·mysql
胖头鱼的鱼缸(尹海文)19 分钟前
数据库管理-第399期 Oracle 19c搭建DG Far Sync日志备库(20260107)
数据库·oracle
Vic1010120 分钟前
华为云高斯数据库:gsqlexec用法
java·大数据·数据库·postgresql·华为云