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

相关推荐
悟乙己2 小时前
使用 RAG、LangChain、FastAPI 和 Streamlit 构建 Text-to-SQL 聊天机器人
sql·langchain·fastapi
serve the people3 小时前
Prompt Serialization in LangChain
数据库·langchain·prompt
万事大吉CC3 小时前
Win11卸载重装oracle 11g数据库
数据库
数据库那些事儿4 小时前
DMS Airflow:企业级数据工作流编排平台的专业实践
数据库
一 乐4 小时前
流浪动物救助|流浪猫狗救助|基于Springboot+vue的流浪猫狗救助平台设计与实现(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·毕设
好记忆不如烂笔头abc4 小时前
Configuration of TCP/IP with SSL and TLS for Database Connections
数据库·网络协议·ssl
安全系统学习4 小时前
自学网络安全学习的误区和陷阱
数据库·学习·安全·web安全·网络安全·安全架构
黄色茶杯5 小时前
AI编程工具TRAE解决日常问题之SQLite数据复制
数据库·sqlite
老华带你飞5 小时前
订票系统|车票管理系统|基于Java+vue的车票管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·订票系统