Oracle 笔记(七)、PL/SQL 基础
2017-11-18 14:20
381 查看
一、概述、PL/SQL 块结构
PL/SQL 是Oracle产品对 SQL 语言的扩展。PL/SQL 块共分为三个部分:声明部分、可执行部分、异常部分。
DECLARE
...
BEGIN
...
EXCEPTION
...
END;
变量声明内容:赋予变量适当的名称、数据类型、定义变量(标准,记录)、控制变量范围。
变量命名规则:变量以字符开头;可包含数字、下划线、$、#;长度范围 1~30;不区分大小写;不能使用系统关键字。
ps.在 PL/SQL 常用的命令:
1、打开输出开关 SET SERVEROUTPUT ON ;
2、利用系统包输出信息 DBMS_OUTPUT.PUT_LINE('x 的值是:' || x);
二、控制结构
1、分支语句
a、IF 分支
IF ... THEN
...
ELSEIF ...THEN
...
ELSE
...
END IF;
b、CASE 分支
CASE
WHEN ... THEN
...
ELSE
...
END CASE;
2、循环语句
a、基本循环(LOOP)
无条件循环,为避免进入无限循环,LOOP 循环的语句必须使用 EXIT 或 EXIT WHEN 语句。
LOOP
...
END LOOP;
b、WHILE 循环
WHILE condition LOOP
...
END LOOP;
c、FOR 循环
FOR counter IN [REVERSE] start..end
LOOP
...
END LOOP;
3、顺序控制
GOTO 语句:无条件的将控制权转到标签指定的语句。
NULL 语句:什么也不做,只是将控制权转到下一条语句,用于语句结构需要,但什么也不需要操作的情况下。
GOTO xxxx;
...
<<xxxx>>
NULL;
三、异常
系统异常(预定义异常)
EXCEPTION
WHEN xxxx THEN
....
自定义异常
DECLARE
-- 自定义异常
xxxxx EXCEPTION;
BEGIN
-- 显式引发异常
RAISE xxxxx
EXCEPTION
-- 异常处理
WHEN xxxxx THEN
....
END;
四、复合变量(记录)
记录是由几个相关值构成的复合变量,常用于支持 SELECT 语句的返回值。使用记录可以将一行数据并到一个单元进行处理,而不必将每一列单独处理。
DECLARE
TYPE myrecord IS RECORD(id varchar2(10), name varchar2(10));
real_record myrecord;
BEGIN
-- SELECT .. INTO 赋值语句
SELECT emp_id, emp_name INTO real_record FROM emp WHERE emp_id='001';
.....
END;
或者 可以利用属性类型来引用变量或者数据库中某列的数据类型。
● 声明变量 icode,引用表中某列 emp.id 的数据类型
icode emp.id%TYPE;
● 声明变量 emp_rec 引用表 emp 中所有列记录类型
emp_rec emp%ROWTYPE;
PL/SQL 是Oracle产品对 SQL 语言的扩展。PL/SQL 块共分为三个部分:声明部分、可执行部分、异常部分。
DECLARE
...
BEGIN
...
EXCEPTION
...
END;
变量声明内容:赋予变量适当的名称、数据类型、定义变量(标准,记录)、控制变量范围。
变量命名规则:变量以字符开头;可包含数字、下划线、$、#;长度范围 1~30;不区分大小写;不能使用系统关键字。
ps.在 PL/SQL 常用的命令:
1、打开输出开关 SET SERVEROUTPUT ON ;
2、利用系统包输出信息 DBMS_OUTPUT.PUT_LINE('x 的值是:' || x);
二、控制结构
1、分支语句
a、IF 分支
IF ... THEN
...
ELSEIF ...THEN
...
ELSE
...
END IF;
b、CASE 分支
CASE
WHEN ... THEN
...
ELSE
...
END CASE;
2、循环语句
a、基本循环(LOOP)
无条件循环,为避免进入无限循环,LOOP 循环的语句必须使用 EXIT 或 EXIT WHEN 语句。
LOOP
...
END LOOP;
b、WHILE 循环
WHILE condition LOOP
...
END LOOP;
c、FOR 循环
FOR counter IN [REVERSE] start..end
LOOP
...
END LOOP;
3、顺序控制
GOTO 语句:无条件的将控制权转到标签指定的语句。
NULL 语句:什么也不做,只是将控制权转到下一条语句,用于语句结构需要,但什么也不需要操作的情况下。
GOTO xxxx;
...
<<xxxx>>
NULL;
三、异常
系统异常(预定义异常)
EXCEPTION
WHEN xxxx THEN
....
自定义异常
DECLARE
-- 自定义异常
xxxxx EXCEPTION;
BEGIN
-- 显式引发异常
RAISE xxxxx
EXCEPTION
-- 异常处理
WHEN xxxxx THEN
....
END;
四、复合变量(记录)
记录是由几个相关值构成的复合变量,常用于支持 SELECT 语句的返回值。使用记录可以将一行数据并到一个单元进行处理,而不必将每一列单独处理。
DECLARE
TYPE myrecord IS RECORD(id varchar2(10), name varchar2(10));
real_record myrecord;
BEGIN
-- SELECT .. INTO 赋值语句
SELECT emp_id, emp_name INTO real_record FROM emp WHERE emp_id='001';
.....
END;
或者 可以利用属性类型来引用变量或者数据库中某列的数据类型。
● 声明变量 icode,引用表中某列 emp.id 的数据类型
icode emp.id%TYPE;
● 声明变量 emp_rec 引用表 emp 中所有列记录类型
emp_rec emp%ROWTYPE;
相关文章推荐
- Oracle PL/SQL语句基础学习笔记(上)
- Oracle基础学习笔记(五) (PL/SQL)
- Oracle PL/SQL语句基础学习笔记(上)
- Oracle 笔记(七)、PL/SQL 基础
- Oracle PL/SQL语句基础学习笔记(下)
- 原创:oracle PL/SQL编程基础 上<十一>
- Oracle笔记 七、PL/SQL 异常处理
- Oracle笔记 九、PL/SQL 游标的使用
- Oracle笔记 十一、PL/SQL函数和触发器
- Oracle OCP笔记(16)SQL与PL/SQL对象
- ORACLE PL/SQL 记录(Record)学习笔记(一)
- oracle复习笔记之PL/SQL程序所要了解的知识点
- Oracle PL/SQL语言基础之一
- Oracle笔记 十三、PL/SQL面向对象之package
- Oracle 学习笔记 17 -- 异常处理(PL/SQL)
- oracle PL/SQL语法基础
- Oracle笔记 十一、PL/SQL函数和触发器
- Oracle PL/SQL开发基础(第四弹:索引)
- PL/SQL学习笔记_01_基础:变量、流程控制
- ORACLE PL/SQL 记录(Record)学习笔记(二)