PLSQL开发(精)PPT课件
合集下载
PL-SQL程序设计PPT2

例子——为新雇员存储其所有信息。
CREATE OR REPLACE PROCEDURE hire_emp (v_emp_no IN emp.empno%TYPE, v_emp_name IN emp.ename%TYPE, v_emp_job IN emp.job%TYPE, v_mgr_no IN emp.mgr%TYPE, v_emp_hiredate IN emp.hiredate%TYPE, v_emp_sal IN emp.sal%TYPE, v_emp_comm IN m% TYPE, v_dept_no IN emp.deptno%TYPE) IS
在数据库的安全控制下可被 应用调用 在forms级安全控制下可被Forms 应用调用 不可以调用Forms的过程 可以调用存储过程
⑵ 创建过程的语法
CREATE [OR REPLACE] PROCEDURE [模式名.]过 程名 [(参数名 [IN | OUT | IN OUT] 数据类型 …)] {IS | AS} [说明部分] BEGIN 语句序列 [EXCEPTION 例外处理] END [过程名];
注释:
● 请注意所有输出参数在过程体中的用法,总是出现在 select语句中的 INTO关键字后面,或出现在赋值语句的左边。
例子: 利用 IN OUT参数在调用者和过程之间传递值 将一个7位数字转换成标准格式的电话号码。
CREATE OR REPLACE PROCEDURE add_dash (v_phone_no IN OUT VARCHAR2) IS BEGIN v_phone_no:=SUBSTR (v_phone_no,l,3) ||„-‟|| SUBSTR (v_phone_no,4,4); END add_dash;
《PLSQL经典教程》课件

PLSQL变量与常量
了解如何定义和使用变量以及常量,实现 数据存储和常量值的复用。
PLSQL条件语句
学习使用条件语句(IF-THEN, IF-THEN-ELSE, IF-THEN-ELSIF)控制程序的执行流程。
PLSQL循环语句
掌握使用循环语句(LOOP, WHILE, FOR) 实现重复执行某一段代码的功能。
《PLSQL经典教程》PPT课 件
本课程旨在介绍PLSQL编程的基础知识和技能。通过本课程,您将全面了解 PLSQL语言的特点和高级应用,提升自己的编程能力。
简介
本课程为PLSQL经典教程PPT课件,旨在介绍PLSQL编程基础知识和技能。
第一章:PLSQL基础
PLSQL简介
PLSQL是Oracle数据库的编程语言,具有丰 富的数据处理和逻辑控制功能。
强制执行。
结束语
感谢您的耐心学习!希望本课程能对您的PLSQL编程有所帮助。
第二章:PLSQL高级应用
1
PLSQL异常处理
学习如何编写异常处理程序以及如
PLSQL游标
2
何定义和抛出异常。
了解如何定义、使用和操作游标,
处理和管理查询结果集。来自3PLSQL存储过程
学习如何定义和使用存储过程,提
PLSQL触发器
4
高编程的模块化和代码复用性。
掌握如何定义和使用触发器,实现 数据库操作的自动化和业务规则的
第4章-使用PLSQL语言PPT课件

select * into v_dept_table(0) from dept where deptno=10; select * into v_dept_table(1) from dept where deptno=20; dbms_output.PUT_LINE('编号:'||v_dept_table(0).deptno||' 名称:'
v_emp.empno:=&no; select * into v_emp from emp where empno=v_emp.empno; dbms_output.PUT_LINE('更新前的奖金'||nvl(v_m,0)); if v_m is null then
update emp set comm=v_emp.sal*0.1 where empno=v_emp.empno; elsIf v_m<1000 then
||v_dept_table(0).dname||' 所在地:'||v_dept_table(0).loc); dbms_output.PUT_LINE('编号:'||v_dept_table(1).deptno||' 名称:'
||v_dept_table(1).dname||' 所在地:'||v_dept_table(1).loc); end;
2021/1/11
.
5
PL/SQL块
所有的PL/SQL程序都以块作为基本单位
块中包含过程化语句和SQL的DML语句。这些块可以按顺序出现 ,也可以相互嵌套(一个块在另一个块的内部)
块的分类
匿名块
匿名块是出现在应用程序中的没有名字且不存储到数据库中的块
v_emp.empno:=&no; select * into v_emp from emp where empno=v_emp.empno; dbms_output.PUT_LINE('更新前的奖金'||nvl(v_m,0)); if v_m is null then
update emp set comm=v_emp.sal*0.1 where empno=v_emp.empno; elsIf v_m<1000 then
||v_dept_table(0).dname||' 所在地:'||v_dept_table(0).loc); dbms_output.PUT_LINE('编号:'||v_dept_table(1).deptno||' 名称:'
||v_dept_table(1).dname||' 所在地:'||v_dept_table(1).loc); end;
2021/1/11
.
5
PL/SQL块
所有的PL/SQL程序都以块作为基本单位
块中包含过程化语句和SQL的DML语句。这些块可以按顺序出现 ,也可以相互嵌套(一个块在另一个块的内部)
块的分类
匿名块
匿名块是出现在应用程序中的没有名字且不存储到数据库中的块
PLSQL编程基础ppt课件

5
7.2 变量的声明与赋值
变量声明并使用变量: 变量名称可以有字母、数字、_、$、#等组成。 所有变量名称要求以字母开头,不能是Oracle中的保留字 变量的长度最多只能为30个字符 变量不区分大小写
6
7.2 变量的声明与赋值
声明变量语法: 变量名称 [CONSTANT] 类型 [not NULL] [:=value] 使用%TYPE声明变量类型: 在编写PL/SQL程序时,如果希望某一个变量与指定数据表中某 一列的类型一样,则可以采用 “变量定义”表名称.表名称%TYPE的格式
DBMS_OUTPUT.put_line('雇员:' || v_eno || '的收入为高工资。') ;
WHEN v_salary >= 2000 AND v_salary <3000 THEN
CASE语句
Case语句是一种多条件的判断语句,其功能与IF……elseif……else类似
Case语法:
Case[变量] when [值|表达式] THEN
执行语句块; when [值|表达式] THEN
执行语句块; Else
条件都不满足时执行语块; End case
22
7.4.1 分支结构
范例:使用CASE进行多条件判断
END IF;
19
7.4.1 分支结构
范例:用户输入一个雇员编号,根据它所在的部门给 上涨工资,规则:
·10部门上涨10%,20上涨20%,30上涨30%; ·但是要求最高不能超过5000,超过5000就停留在 5000。
20
7.4.1 分支结构
DECLARE
v_empSal
emp.sal%TYPE ;
7.2 变量的声明与赋值
变量声明并使用变量: 变量名称可以有字母、数字、_、$、#等组成。 所有变量名称要求以字母开头,不能是Oracle中的保留字 变量的长度最多只能为30个字符 变量不区分大小写
6
7.2 变量的声明与赋值
声明变量语法: 变量名称 [CONSTANT] 类型 [not NULL] [:=value] 使用%TYPE声明变量类型: 在编写PL/SQL程序时,如果希望某一个变量与指定数据表中某 一列的类型一样,则可以采用 “变量定义”表名称.表名称%TYPE的格式
DBMS_OUTPUT.put_line('雇员:' || v_eno || '的收入为高工资。') ;
WHEN v_salary >= 2000 AND v_salary <3000 THEN
CASE语句
Case语句是一种多条件的判断语句,其功能与IF……elseif……else类似
Case语法:
Case[变量] when [值|表达式] THEN
执行语句块; when [值|表达式] THEN
执行语句块; Else
条件都不满足时执行语块; End case
22
7.4.1 分支结构
范例:使用CASE进行多条件判断
END IF;
19
7.4.1 分支结构
范例:用户输入一个雇员编号,根据它所在的部门给 上涨工资,规则:
·10部门上涨10%,20上涨20%,30上涨30%; ·但是要求最高不能超过5000,超过5000就停留在 5000。
20
7.4.1 分支结构
DECLARE
v_empSal
emp.sal%TYPE ;
Oracle PL、SQL程序设计培训课程ppt(共25页)

对于有触发语句影响每一行记录
20
触发器主体可以访问的表
变化表:被DML语句正在修改的表,义既定义触 发器的表
限制表:有些表在创建的时候就带有参考完整 性限制的声明主建与外建
触发器主体中的限制
不可以读取或修改任何变化表
21
创建行级触发器:
当触发器已经存在时,使用Replace选项。 Update中的of是可选项,用于指定Update语句要
3、可以降低网络的通信量
4、保证数据库的安全性和完整性
通过存储过程不仅可以使没有权限的用户在控制之下间接地存取数据库,保
证数据的安全;而且可以使相关的动作在一起发生,从而可以维护数据库的完
整性。
5、灵活性
存储过程可以用流控制语句编写,具有很强的灵活性,可以完成复杂的判断
和运算,可以根据条件执行不通SQL语句。
修改的列。 根据进行一个操作时触发器的触发次数决定是用
语句级、还是行级触发器。 当某一操作结果只影响一行时,语句级触发器与
行触发器效果相同。当操作影响到数据库多行数 据时,语句级触发器只触发一次,而行级触发器 触发多次。
……; End 包名;
9
创建包
10
创建包体
1
----定义过程
11
创建包体
2 3
----定义过程
12
包的调用
13
Oracle Database Trigger 数据库触发器设计
14
数据库触发器作用
防止非法的数据库操纵、维护数据库安全 对数据库的操作进行审计,存储历史数据 完成数据库初始化处理 控制数据库的数据完整性 进行相关数据的修改 完成数据复制 自动完成数据库统计计算 限制数据库操作的时间、权限等,控制实体的
PLSQL课件.ppt

1 PL/SQL简介
❖ SQL是属于第四代语言(4GL),其执行特点是非 过程化(描述性语言)。
❖ 然而,对于有些复杂的业务流程又要求相应的程序 来描述,那么4GL就有些无能为力了。PL/SQL的 出现正是为了解决这一问题,PL/SQL是一种过程 化语言,属于第三代语言,它与C,C++,Java等语言 一样关注于处理细节,因此可以用来实现比较复杂 的业务逻辑。
(4)可以使用Oracle数据工具管理存储在服务器中的PL/SQL 程序的安全性。可以授权或撤销数据库其他用户访问 PL/SQL程序的能力。
(5)PL/SQL代码可以使用任何ASCII文本编辑器编写,所以 对任何Oracle能够运行的操作系统都是非常便利的。
开发运行环境
❖ PL/SQL 不需要显式的安装或许可。它是 Oracle数据库的隐式部分。PL/SQL 编译器 和解释器也嵌入到多个 Oracle 工具中。
❖ Variable_name [CONSTANT] databyte [NOT NULL][:=|DEFAULT expression]
❖ v_id number; 声明变量 ❖ v_id CONSTANT NUMBER:=0 常量声明并赋值 ❖ birthdate DATE; ❖ emp_count SMALLINT DEFAULT 0; ❖ acct_id VARCHAR2(5) NOT NULL := 'AP001'; ❖ acct_id VARCHAR2(5) NOT NULL; -- 不合法,
变量赋值
❖ v_id:=5; --在程序执行部分赋值 ❖ Select a.deptno into v_dept … ❖ Fetch c1 into vname
《PLSQL简介》PPT课件

了赋值语句、主机变量的使用,替换变量的使用,以 及使用DBMS_OUTPUT包在SQL*PLUS中显示输出 结果 。 数据重点:主机变量和替换变量 数据难点:无 课时安排:2课时
什么是PL/SQL
• 虽然SQL功能强大,但是它仍然有很多局限性。因此, ORACLE增加了一种过程化语言作为SQL的编程语言 扩展,称为PL/SQL。它是ORACLE的专用语言。 PL/SQL也有面向对象语言的特性,例如数据封装、异 常处理、信息隐藏、面向对象编程等。
SELECT LNAME,FNAME FROM EMPLOYEE WHERE DEPTID=DEPT_NUM; BEGIN
OPEN EMPLOYEE_CUR(D_ID);--打开游标 DBMS_OUTPUT.PUT_LINE('员工在编号为'||TO_CHAR(D_ID)||'的部门'); LOOP
PL/SQL的保留字
• 保留字也叫关键字,是由语言所提供的有特殊含义活 动作的单词。如DECLAR、BEGIN、IF、WHILE、 EXCEPTION、PROCEDURE、FUNCTION、 PACKAGE、TRIGGER等都是PL/SQL的保留字。
用户定义的标识符
用户定义的标识符用来命名变量、常量、过fe程、 函数、游标、表、记录和异常。命名这些标识时必须 遵循下列规则: • 名称长度为1-30个字符 • 名称必须以字符开头 • 允许使用字符、数字、$、#、_ • 不允许使用空格 • 不允许使用其它一些专门字符 • 不可使用关键字 • 同一个块内,名称必须是唯一的 • 名称不能和块中所用的字段名相同
ORACLE9i数据库SQL和 PL/SQL简明教程
指定教材 书名:Oracle数据库系统——
什么是PL/SQL
• 虽然SQL功能强大,但是它仍然有很多局限性。因此, ORACLE增加了一种过程化语言作为SQL的编程语言 扩展,称为PL/SQL。它是ORACLE的专用语言。 PL/SQL也有面向对象语言的特性,例如数据封装、异 常处理、信息隐藏、面向对象编程等。
SELECT LNAME,FNAME FROM EMPLOYEE WHERE DEPTID=DEPT_NUM; BEGIN
OPEN EMPLOYEE_CUR(D_ID);--打开游标 DBMS_OUTPUT.PUT_LINE('员工在编号为'||TO_CHAR(D_ID)||'的部门'); LOOP
PL/SQL的保留字
• 保留字也叫关键字,是由语言所提供的有特殊含义活 动作的单词。如DECLAR、BEGIN、IF、WHILE、 EXCEPTION、PROCEDURE、FUNCTION、 PACKAGE、TRIGGER等都是PL/SQL的保留字。
用户定义的标识符
用户定义的标识符用来命名变量、常量、过fe程、 函数、游标、表、记录和异常。命名这些标识时必须 遵循下列规则: • 名称长度为1-30个字符 • 名称必须以字符开头 • 允许使用字符、数字、$、#、_ • 不允许使用空格 • 不允许使用其它一些专门字符 • 不可使用关键字 • 同一个块内,名称必须是唯一的 • 名称不能和块中所用的字段名相同
ORACLE9i数据库SQL和 PL/SQL简明教程
指定教材 书名:Oracle数据库系统——
PLSQL开发(精)PPT课件

主要用于从表中取出查询到的行数据
.
20
PL/SQL RECORD结构
记录类型可以包含一个或多个域,每个域相当于 记录类型变量的一个属性.在使用记录变量类型 时,实际上是对记录类型变量的属性进行操作. 每个域都可以是不同的数据类型,存放不同类型 的数据
Field1 (数据类型) Field2 (数据类型) Field3 (数据类型)
WHEN OTHERS THEN
ROLLBACK;
INSERT INTO exception_table (message)
VALUES (‘Some error occurred in the database.’);
COMMIT;
END;
.
9
PL/SQL环境
PL/SQ L
Block
在数据库执行PL/SQL程序的时候,PL/SQL语句和SQL 语句被分别解析和执行的。PL/SQL块被数据库内 部的PL/SQL引擎提取,将SQL语句取出送给Oralce的 SQL引擎。两种语句分别在两种引擎中分析处理,在 数据库内部完成数据交互,处理的过程
Table类型没有长度限制,可以动态增长.表类型 中的第二部分类似与数组中的值,这个部分必须 是一个已经确定的简单类型,不能是其他的复合 类型
表类型的结构很像数组.第一部分使一个按1递
增的整形数字,起到数字索引的作用,第二部分使
一种确定的简单类型,用来存放每个索引号对应
的具体的数值
.
17
PL/SQL TABLE 结构
BEGIN
SELECT department_id INTO v_dept_id
FROM employees
WHERE employee_id = 100;
.
20
PL/SQL RECORD结构
记录类型可以包含一个或多个域,每个域相当于 记录类型变量的一个属性.在使用记录变量类型 时,实际上是对记录类型变量的属性进行操作. 每个域都可以是不同的数据类型,存放不同类型 的数据
Field1 (数据类型) Field2 (数据类型) Field3 (数据类型)
WHEN OTHERS THEN
ROLLBACK;
INSERT INTO exception_table (message)
VALUES (‘Some error occurred in the database.’);
COMMIT;
END;
.
9
PL/SQL环境
PL/SQ L
Block
在数据库执行PL/SQL程序的时候,PL/SQL语句和SQL 语句被分别解析和执行的。PL/SQL块被数据库内 部的PL/SQL引擎提取,将SQL语句取出送给Oralce的 SQL引擎。两种语句分别在两种引擎中分析处理,在 数据库内部完成数据交互,处理的过程
Table类型没有长度限制,可以动态增长.表类型 中的第二部分类似与数组中的值,这个部分必须 是一个已经确定的简单类型,不能是其他的复合 类型
表类型的结构很像数组.第一部分使一个按1递
增的整形数字,起到数字索引的作用,第二部分使
一种确定的简单类型,用来存放每个索引号对应
的具体的数值
.
17
PL/SQL TABLE 结构
BEGIN
SELECT department_id INTO v_dept_id
FROM employees
WHERE employee_id = 100;
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
BEGIN
SELECT department_id INTO v_dept_id
FROM employees
WHERE employee_id = 100;
DELETE departments
WHERE department_id = v_dept_id;
COMMIT;
EXCEPTION
简单变量 复合(组合)变量 外部变量
.
13
简单变量
简单变量不包括任何组件,只能保存一个值
基本类型包括三大类:字符,数字,日期
– BINARY_INTEGER
整形数字
– NUMBER [(precision, scale)] 数字类型
– CHAR [(maximum_length)] 定长字符类型
WHEN OTHERS THEN
ROLLBACK;
INSERT INTO exception_table (message)
VALUES (‘Some error occurred in the database.’);
COMMIT;
END;
.
9
PL/SQL环境
PL/SQ L
Block
在数据库执行PL/SQL程序的时候,PL/SQL语句和SQL 语句被分别解析和执行的。PL/SQL块被数据库内 部的PL/SQL引擎提取,将SQL语句取出送给Oralce的 SQL引擎。两种语句分别在两种引擎中分析处理,在 数据库内部完成数据交互,处理的过程
结 果显示给用户
.
6
PL/SQL提高了性能
应用程序 应用程序
SQL
SQL
SQL
SQLSQL
IF...THE N
SQ L
ELSE
SQ L
END IF;
SQL
.
Database Database
7
PL/SQL块的基本结构
PL/SQL中起作用的部分都是由基本块组成的.基本块有四 个
组成部分 声明部分:DECLARE – 可选部分
PL/SQL 引擎
non- Procedura
PL/SQL SSQQL Block L
l Statement
Executor
SQL 引擎
SQL Statement Executor oracle 数据 库
.
10
在PL/SQL中处理变量
在声明部分声明和初始化变量 在执行部分为变量赋新值,或在表达式中使用变量 在异常处理部分也可以使用变量 通过参数把值传递到PL/SQL 块中 通过输出变量或者参数将值传出PL/SQL块
关系
可以把oracle数据库看作餐馆的厨房,而SQL*PLUS是将菜单(脚 本,命令或程序)送进厨房(即数据库)的服务员.在厨房中有两 个厨师,SQL 和PL/SQL.作为服务员的SQL*PLUS知道它可以 处理那些命令,那些命令要交给厨师处理. 在SQL*PLUS提示符下输入的执行命令或程序就象顾客点的 菜.对于每个顾客点的菜,厨师都知道如何进行处理,就像在厨 师心中的菜谱一样,PL/SQL也存储常用命令的食谱(这些元素 称为触发器,存储函数,存储过程,软件包). 有些大菜需要多个厨师共同处理,大多数的程序都是结合了 SQL和PL/SQL,并在他们之间来回的传递信息,从而处理脚本或程 序.顾客点的菜作好之后,再由作为服务员的SQL*PLUS将执行的
.
11
声明变量和常量:语法
identifier [CONSTANT] datatype [NOT NULL]
[:= | DEFAULT expr];
例如:
v_total_sal NUMBER(9,2) := 0;
c_tax_rate CONSTANT NUMBER(3,2) := 8.25;
v_gender CHALEAN NOT NULL := TRUE;
定义的标示符名称应遵循命名规则
在声明常量和变量的时候可以为其设置初始化值, 也可以设置NOT NULL
可以使用赋值运算符(:=)或者DEFAULT保留字来初 始化标识符
在声明时,每行只能声明. 一个标识符
12
PL/Sql中的变量类型
– 变量、常量、游标、用户定义异常声明 执行体开始部分:BEGIN – 必要部分
– SQL语句 – PL/SQL语句 异常处理部分:EXCEPTION – 可选部分 – 程序出现异常时,捕捉异常并处理异常 执行体结束:END; – 必要部分
.
8
PL/SQL块例子
DECLARE
v_dept_id employees.department_id%TYPE;
.
4
PL/SQL提供的新特性
PL/SQL提供了一些新的特性,可以进行复杂的信息处理 软件包 触发器 存储过程 函数 异常处理 PL/SQL可以使用所有的SQL数据操作,游标控制和事务控
制命令,以及所有的SQL函数和运算符.PL/SQL完全支持 SQL数据类型
.
5
SQL,SQL*PLUS,PL/SQL之间的
– VARCHAR2(maximum_length) 变长字符类型
– DATE
日期类型
– LONG
长字符类型
– LONG RAW
长二进制类型
– CLOB / BLOB / BFILE
大对象类型(字符大对象,二
–
象)
进制大对象,操作系统文件大对
.
3
PL/SQL的优点
使用PL/SQL可以编写具有很多高级功能的程序,虽 然这些功能可以通过多个SQL语句来完成同样的功 能,但是PL/SQL具有如下的优点: 使一组语句功能形成模块化程序开发 使用过程性语言控制程序结构 可以对程序中的错误进行处理 具有较好的可移植性 集成在数据库中,调用更快 减少了网络的交互,有助于提高程序性能
第八章
PL/Sql开发
.
1
本章要点
PL/SQL基本概念 PL/SQL的变量 PL/SQL的基本语法 Oracle各种程序单元 使用游标取出多条数据 异常处理
.
2
PL/SQL概述
什么是PL/SQL PL/SQL也是一种程序语言,被称作支持SQL的程
序语言(Program Language),是Oracle数据库对SQL 语句的扩展,在普通的SQL语言中增加了编程语 言的特点 数据操作和查询语句被包含在PL/SQL代码的过 程性单元中,经过逻辑判断、循环等操作完成复 杂的功能或者计算