一、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、错误处理
-
支持异常处理机制
-
可以在块中捕获和处理错误
八、编程最佳实践
-
使用 %TYPE 和 %ROWTYPE 提高代码的健壮性和可维护性
-
及时提交事务 确保数据一致性
-
合理处理空值 避免运行时错误
-
使用循环控制变量 防止无限循环
-
添加适当的输出 便于调试和跟踪