《数据库》第十一章 PLSQL简介

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

BPSELEG/LISNEQCLT qu分an为tity三INT个O v部_qu分an,tity 声明部分、可执行部分和异常处
理FR部OM分Products
WHERE product = '芭比娃娃'
[DFIFOEvRC_qULuPAaDnRtAiEtTyE>O0FTHquEaNntity;
deUclPaDraATtiEonPsro]ducts SET quantity = quantity - 1
18
19
Inspur Education
错误处理 2-1
在运行程序时出现的错误叫做异常
发生异常后,语句将停止执行,控制权转移到 PL/SQL 块的异常处理部分
异常有三种类型:
预定义异常 - 当 PL/SQL 程序违反 Oracle 规则或超越系统 限制时隐式引发
用户定义异常 - 用户可以在 PL/SQL 块的声明部分定义异常, 自定义的异常通过 RAISE 语句显式引发
声明变量和常量的语法:
identifier [CONSTANT] datatype [NOT NULL] [:= | DEFAULT expr];
给变量赋值有两种方法:
➢ 使用赋值语句 := ➢ 使用 SELECT INTO 语句
9
Inspur Education
变量和常量 2-2
set serveroutput on declare
Inspur Education
LOB 数据类型 2-2
LOB 类型的数据库列仅存储定位符,该定位符指向大 型对象的存储位置
DBMS_LOB程序包用于操纵 LOB 数据 set serveroutput on
declare
content CLOB;
beginPosition integer;
amount integer; outputString varchar(100); begin
NATURALLN
FLOAT
POSITIVE
INTEGER
POSITIVEN
REAL
SIGNTYPE
13
Inspur Education
字符数据类型
数据类型
SQL类 型
PL/SQL类 型
CHAR 1..2000 1..32767
LONG 1..2GB 1..32760
LONG RAW
1..2GB 1..32760
指定出现错误时需要执行 的操作
EWNDDHBE;MNSO_OTHUETRPUSTT.PHUETN_LINE('出错:'|| SQLERRM);
END;
Inspur Education
变量和常量 1-2
PL/SQL 块中可以使用变量和常量
• 在声明部分声明,使用前必须先声明 • 声明时必须指定数据类型,每行声明一个标识符 • 在可执行部分的 SQL 语句和过程语句中使用
v_name char(8); c_name constant char(10) := '学生姓名:'; begin select f_name into v_name from martin.t_student where f_id='001'; dbms_output.put_line(c_name||v_name); exception /* 异常处理语句 */ when others then

使用属性类型的优点:
• 不v需_na要me知t_s道tud被ent.引f_na用me的%ty表pe列; 的具体类型 • 如r果ec_被stu 引t_st用ude对nt%象row的typ数e; 据类型发生改变,
PL/SQL 变量的数据类型也随之改变
17
Inspur Education
逻辑比较
逻布辑尔比表较达用式于的比结较果变为量TR和UE常、量FA的LS值E或,N这UL些L,表通达常式由称逻为辑布运尔 表算达符式AND、OR和NOT连接
Baidu Nhomakorabea
提C供L某OB个变量或数提据供库表表示列表中一行的记录类 的数据类型 型 NCLOB
11
12
Inspur Education
数字数据类型
指定数值的存储格式 数字数据类型
BINARY_INTEGER
NUMBER
PLS_INTEGER
存储有符号整数,所需存储 空间少于NUMBER类型值
NA存T储UR整A数L 、实数和浮点数DECI存算MA储术L有计符算号快整速数而,有可效使
15
Inspur Education
LOB 数据类型 2-1
用于存储大文本、图像、视频剪辑和声音剪辑等非结构化 数据。
LOB 数据类型可存储最大 4GB的数据。 LOB 类型包括:
BLOB 将大型二进制对象存储在数据库中 CLOB 将大型字符数据存储在数据库中 NCLOB 存储大型UNICODE字符数据 BFILE 将大型二进制对象存储在操作系统文件中
内部定义异常-运行时系统隐式(自动)引发内部定义的异常。 内部定义的异常的案例是ORA-00060(在等待资源时检测到死锁) 和ORA-27102(内存不足)
Inspur Education
错误处理 2-2
DE处CLA理RE预定义异常 in处vali理dDe用p E户XC定EP义TIO异N; 常
20
Inspur Education
引发应用程序错误
DECLARE
vR_AclIasSsEt__sAtuPdePnLt.If_CidA%TTIYPOEN;_ERROR 过程
cla•ss用_ex于ce创ptio建n E用XC户EP定TI义ON的; 错误信息 BSEEG•LINE可CT以N在VL(可f_c执las行s,0部) IN分TO和v异_cla常ss处FR理OM部t_分stu使de用nt W•HE错RE误f_编id 号= '0必07须'; 介于 –20000 和 –20999 之间 IF•v_错cla误ss =消0息TH的EN长度可长达 2048 个字节
引擎执将行SQSQL L语语句句发送给 SQL 语句执行器
Oracle 服务器 PL/SQL引擎
过程语句 执行器
SQL 语句 执行器
7
8
Inspur Education
PL/SQL 块简介
PL/SQL 块是构成 PL/SQL 程序的基本单元 D将vE_C逻qLuAa辑nRtEit上y N相UM关BER的(5声); 明和语句声明组部合和分自在定定义一义变起异量常、游标
移植性、灵活性和安全性
4
5
Inspur Education
PL/SQL 的优点 2-1
支持 SQL,在 PL/SQL 中可以使用:
数据操纵命令
事务控制命令
游标控制
SQL 函数和 SQL 运算符
支持面向对象编P程roc(eOduOreP)
可移植性,可Be运gin行在任何操作系统和平台上的Oracle
RAISE class_exception;
E引LS发E 应用程序错误的语法:
DBMS_OUTPUT.PUT_LINE('班级为:' || v_class); ERNADISIEF_;APPLICATION_ERROR(error_number, error_message); EXCEPTION WHEN class_exception THEN
Inspur Education
第11章 PLSQL简介
Inspur Education
知识点回顾
使用同义词 使用序列 理解并使用视图 使用索引
2
Inspur Education
本章目标
理解 PL/SQL 功能和特点 了解数据类型及其用法 掌握PL/SQL块的使用 掌握错误处理
3
Inspur Education
SQL PL/SQL
安全性,可以通过存储过程限制用户对数据的 访问
6
Inspur Education
PL/SQL 的体系结构
PL/SQL 引擎驻留在 Oracle 服务器中 该引擎接受 PL/SQL 块并对其进行编译执行
用户
将PL/SQL 块发送给 Oracle 服务器
将结果发送给用户 执行过程语句
department VARCHAR2(10); BEGIN
depardtmecelnatre:= '&Dep'; IF depasrttumneanmt eNcOhTarI(N8)(;'CS','BIO','Maths','PHY') THEN
RAISbEegininvalidDep; ELSE select f_name into stuname from t_student;
PL/SQL 简介
PL/SQL 是过程语言(Procedural Language)与结构化 查询语言(SQL)结合而成的编程语言
PL/SQL 是对 SQL 的扩展 支持多种数据类型,如大对象和集合类型,可使用条件
和循环等控制结构 可用于创建存储过程、触发器和程序包,给SQL语句的
执行添加程序逻辑 与 Oracle 服务器和 Oracle 工具紧密集成,具备可
从表中选择 CLOB 定位符 到 contentr变量中
select f_content into content from t_booktext where f_chapterid='001';
beginPosition := 1;
amount := 22;
dbms_lob.read(content,amount,beginPosition,outputString);
RAW
1..2000 1..32767
VARCHA R2
1..4000
1..32767
Inspur Education
日期时间和布尔数据类型
日期时间类型
• 存储日期和时间数据 • 常用的两种日期时间类型
• DATE • TIMESTAMP 布尔数据类型
• 此类别只有一种类型,即BOOLEAN类型 • 用于存储逻辑值(TRUE、FALSE和NULL) • 不能向数据库中插入BOOLEAN数据 • 不能将列值保存到BOOLEAN变量中 14 • 只能对BOOLEAN变量执行逻辑操作
dbms_output.put_line(outputString);
end;
从CLOB数据中读取22个字符
/
显示读到的信息
存储到 outputString 变量中
16
Inspur Education
属性类型
用于引用数据库列的数据类型,以及表示表中一行的记 录类型
属性类型有两种:
• %TYPE - 引用变量和数据库列的数据类型 • %ROWTYPE - 提供表示表中一行的记录类
布尔表达式由关系运算符与变量或常量组成
关系运算符
= <>, !=
< > <= >=
说明
比较两个变量是否相等,如果值相当,则返回 True 比较两个变量,如果不相等,则返回 True 比较两个变量,检查值 1 是否小于值 2 比较两个变量,检查值 1 是否大于 值 2 比较两个变量,检查变量 1 是否小于等于变量 2 比较两个变量,检查变量 1 是否大于等于变量 2
BEWINGHSINEERRTE
product = '芭比娃娃'; INTO purchase_record
exeVAcLuUtaEbSle('已st购a买te芭m比en娃ts娃', SYSDATE);
包含 SQL 和 PL/SQL 语 句的可执行部分
[EECXNOCDMEMIFPI;TT; ION hEaXnCdElPeTrsIO] N /* 异常处理语句 */
数据库
ProcedureCall SQL Command
Oracle
更佳的性能,E…nPdL/SQL 经过编译执行
用户将整个语句块发送给 Oracle
Inspur Education
PL/SQL 的优点 2-2
与 SQL 紧密集成,简化数据处理。
支持所有 SQL 数据类型 支持 NULL 值 支持 %TYPE 和 %ROWTYPE 属性类型
DBMeSx_cOepUtiToPnUT.PUT_LINE('您输入系别的是'||department); END IFw; hen too_many_rows then EXCEPTIdObNms_output.put_line('返回多行'); WHENenindv; alidDep THEN
DBM/S_OUTPUT.PUT_LINE('无法识别该系别'); END; /
dbms_output.put_line('出错:'||SQLERRM); end; /
10
Inspur Education
数据类型
PL/SQL 支持的内置数据类型
数据类型
标量类型
LOB类型
复合类型
引用(属性) 类型
数字
存储非结构化数BF据IL块E
字符
BLOB %TYPE
%ROWTYPE
布尔型 日期时间
相关文档
最新文档