PLSQL语言

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

幻灯片 22
PL/SQL
• 一般格式:ROLLBACK;
事务回退命令

说明 – 在尚未对数据库提交的时候,可以用事务回退命令ROLLBACK,将数据库 回退到上次COMMIT后的状态。 – 一旦事务已经提交,就不能再使用事务回退命令进行回退了。 – 事务回退将回退整个事务,如果只需回退事务的一部分时,可以使用保 存点,将整个事务划分为若干部分,这样就可以回退部分事务了。
幻灯片 6
PL/SQL
定义部分说明
• 在PL/SQL中使用的变量、常量、游标和异常处理的名字都必须先定义 后使用。 • 定义部分是包括在关键字DECLARE和BEGIN之间的部分,每条语句后用 ‘;’结束。 • 每行只能定义一个标识符。
• 如果加上关键字CONSTANT,则表示所定义的标识符为一个常量,必须
• 一般格式:COMMIT;
事务提交命令
• 说明
– 提交命令用于提交自上次提交以后对数据库中数据所作的改动。 – 在Oracle数据库中,为了维护数据的一致性,系统为每个用户分别 设置了一个工作区。对表中数据所作的增、删、改操作都在工作 区中进行,在执行提交命令之前,数据库中的数据(永久存储介 质上的数据)并没有发生任何改变,用户本人可以通过查询命令 查看对数据库操作的结果,但是整个网络上的其他用户并没有看 到你对数据库所作的改动。 – 提交命令就是使对数据的改变永久化。
幻灯片 11
PL/SQL
• 声明记录类型和记录类型变量
记录数据类型示例
DECLARE TYPE EMPLOYEE IS RECORD (empno NUMBER(4) NOT NULL default 0, ename VARCHAR(10) , job VARCHAR(9) , hiredate DATE); --下面定义一个employee类型的变量 employee1 EMPLOYEE; BEGIN …… --引用方式:employee1 .empno employee1 .ename
幻灯片 25
PL/SQL
• 程序结构体
流程控制
– 顺序结构体
– 条件分支结构体 – 循环结构体
• 流程控制语句 – 条件控制 – 循环控制
幻灯片 26
PL/SQL
• IF_THEN_ELSE语句 • 语法格式: IF <条件> THEN <语句组1> ELSE <语句组2> END IF;
条件控制语句
SERVEROUTPUT ON)
幻灯片 18
PL/SQL

事务控制命令(DTL)
事务是指在相邻两条事务控制命令COMMIT之间的一组sql语句,它是对数据库 操作的逻辑单元。

事务是一个完整的活动序列,包含一组操作,这些操作或者全部成功地执行, 此时整个活动序列的所有执行结果都被保存到数据库中。或者都不执行并恢 复到执行前的状态,我们说事务已经回滚。
幻灯片 21
PL/SQL
• 显式提交 使用COMMIT命令提交所有未提交的更新操作
事务的提交方式

隐式提交 DDL命令以及CONNECT、EXIT、GRANT、REVOKE等命令隐含COMMIT操作,只要使 用这些命令,系统就会进行提交;

自动提交(SET AUTO ON,默认为OFF) 如果使用了SET命令设置自动提交环境,则每次执行INSERT UPDATE DELETE命 令,系统就会立即自动提交。
b_sex BOOLEAN; c_zero CONSTANT CHAR(1):= '0';
d_today DATE not null := sysdate;
age number(3) not null := 25;
幻灯片 9
PL/SQL
使用%TYPE
• 使用%TYPE声明一个变量,可以使它的类型与某个变量或数据库基本 表中某个列的数据类型一致。
SQL语句使用示例
select * into emp_value from emp where empno= 7654; --输出变量的值 dbms_output.putline(emp_value.ename);
END;
-- --使用DBMS_OUTPUT.PUT_LINE之前,应该设置环境变量SERVEROUTPUT。(SET
• 说明: <条件>是一个布尔型变量或表达式,取值只能是TRUE,FALSE,NULL。
幻灯片 27
PL/SQL
• •
关系运算

IF_THEN_ELSIF语句 语法格式: IF <条件1> THEN <语句组1> ELSIF <条件2> THEN <语句组2> ELSIF < 条件n> THEN <语句组n> ...] [ELSE <语句组n+1>]] END IF; 注意:ELSIF 不要误写为ELSEIF。
幻灯片 12
PL/SQL

使用%ROWTYPE
使用%ROWTYPE声明一个记录型变量,可以使它的类型与某个基本表的数据结 构一致。

示例:
DECLARE emp_value EMP %ROWTYPE; BEGIN …… --引用方式:emp_value .empno emp_value .ename

在使用SELECT …INTO…时,结果只能有一条,如果返回了多条数据或没有数据, 则将产生错误。(对于多条记录的遍历,可以使用游标)
在PL/SQL中,SQL语句的语法和交互命令时是一样的。

幻灯片 17
PL/SQL
--查询EMP中EMPNO = 7654的雇员的信息。 DECLARE --定义一个记录类型变量 emp_value EMP %ROWTYPE; BEGIN
( <field> <datatype> [[NOT NULL]{DEFAULT|:=} <expression>] [,<field> …] );

[说明] – 标识符<recordtypename>是定义的记录类型名; – 要定义记录型变量,定义方法与前面标量型变量定义一样。 – 记录类型变量的属性引用方法是‘.’引用。
幻灯片 2
PL/SQL
• PL/SQL语言以块为单位,块中可以嵌套子块。
PL/SQL块的组成
• 一个基本的PL/SQL块由3部分组成:
– 定义部分(DECLARE) – 执行部分(BEGIN)
– 异常处理部分(EXCEPTION)(可选)
幻灯片 3
PL/SQL
• PL/SQL块的定义部分
PL/SQL块的解释

PL/SQL块的异常处理部分
该部分包含该块的异常处理程序(错误处理程序)。当该块程序体中的某个语句 出现异常(检测到一个错误)时,程序控制转到异常部分的相应的异常处理程序 中进行进一步的处理。该部分由关键字EXCEPTION开始,END关键字结束。
幻灯片 4
PL/SQL
简单PL/SQL块的示例
• 在SQL*PLUS下执行如下程序 SQL> SET SERVEROUTPUT ON(打开控制台输出) SQL> BEGIN SQL> DBMS_OUTPUT.PUT_LINE('Hello World!'); SQL> END; SQL> /
teacher_Name := 'LIU';
2、记录类型变量的赋值 employee1.ename := 'FAN';
employee1.hiredate :=TO_DATE('2003-10-15', 'YYYY-MM-DD');
3、%ROWTYPE型变量的赋值 emp_:='BLACK'; emp_value.empno:=8888; emp_value.deptno:=10; 4、用SELECT语句为%ROWTYPE型变量整个赋值 SELECT * INTO emp_value FROM emp WHERE ename:='FA';
Hello World!
PL/SQL 过程已成功完成。
幻灯片 5
PL/SQL
定义部分
• 简单变量定义的一般格式:
<variablename> [CONSTANT] <datatype> [[NOT NULL] {DEFAULT | :=} <expression>];
示例:
EMP_ID VARCHAR(10) := '111';
幻灯片 13
PL/SQL
可执行部分
• 可执行部分组成语句:
– 变量赋值语句;
– 流程控制语句; – 数据查询、数据操纵和事务控制语句; – 游标语句;
幻灯片 14
PL/SQL
• 赋值号为‘:=’。 • 格式:<变量> := <表达式>;
赋值语句
幻灯片 15
PL/SQL
1、基本数据类型变量赋值
赋值语句示例
为它赋初值。 • 标识符的命名规则与SQL的规则基本相同,即每个标识符必须以字母 开头,而且不分大小写。如果定义的标识符不能为空,则必须加上关 键字NOT NULL,并赋初值。 • 为标识符赋值时,使用赋值符号‘:=’,默认值为空。
幻灯片 7
PL/SQL
常用的基本数据类型

幻灯片 8
PL/SQL
基本数据类型示例
PL/SQL
PL/SQL
幻灯片 1
PL/SQL
PL/SQL简介
• PL/SQL(Procedure Language/SQL)过程化SQL语言
• PL/SQL是Oracle数据库对SQL语句的扩展。在普通SQL语句的使用上增
加了编程语言的特点,所以PL/SQL就是把数据操作和查询语句组织在 PL/SQL代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的 功能或者计算的程序语言。
幻灯片 23
PL/SQL
设置保存点命令

保存点的设置和使用格式: – SAVEPOINT <保存点名称>; – ROLLBACK TO <保存点名称>;

说明 – 创建保存点,用于事务的阶段回退
幻灯片 24
PL/SQL
• 使用EMP表,练习事务处理命令
事务控制示例
DELETE FROM EMP WHERE ENAME = ‘SMITH’; SELECT * FROM EMP WHERE ENAME = ‘SMITH’; ROLLBACK; SELECT * FROM EMP WHERE ENAME = ‘SMITH’; INSERT INTO EMP(EMPNO,ENAME,SAL) VALUES(9000,’LIU’,1250); SAVEPOINT INSERT_POINT; INSERT INTO EMP(EMPNO,ENAME,SAL) VALUES(9001,’FU’,1300); ROLLBACK TO INSERT_POINT; COMMIT;
[示例1]: e_no EMP.EMPNO%TYPE;
[示例2]:
teacher_name char(5); student_name teacher_name%TYPE;
幻灯片 10
PL/SQL
• 记录类型定义的一般格式: TYPE <recordtypename> IS RECORD
记录类型定义
幻灯片 16
PL/SQL
• •
SQL语句
在可执行部分,可以使用SQL语句,但是不是所有的SQL语句都可以使用。 可以使用的主要有: SELECT,INSERT,UPDATE,DELETE,COMMIT,ROLLBACK等数据查询、数据操纵或事 务控制命令。
• •
不能使用CREATE,ALTER,DROP,GRANT,REVOKE等数据定义和数据控制命令。 在PL/SQL中,SELECT语句必须与INTO子句相配合,在INTO子句后面跟需要赋 值的变量。
与C语言类似,PL/SQL中使用的变量、常量、游标和异常处理的名字都必须先定义 后使用。并且必须定义在以DECLARE关键字开头的定义部分。

PL/SQL块的执行部分 该部分是PL/SQL块的主体,包含该块的可执行语句。该部分定义了块的功能,是 必须的。由关键字BEGIN开始,EXCEPTION或END结束。
幻灯片 28
PL/SQL

条件控制语句示例
根据表emp中DEPTNO字段的值,为姓名为FROD的雇员修改工资;若部门号为 10,则工资加100;若部门号为20,则工资加200;否则工资加300。

示例: 买东西是一个典型的事务过程:交钱、拿走货物。 验货入库也是一个典型的事务过程:来货验收、入库 财务帐目转移:A帐户转到B帐户。
幻灯片 19
PL/SQL
事务控制命令
• COMMIT (事务提交) • ROLLBACK(事务回退) • SAVEPOINT(设置保存点命令)
幻灯片 20
PL/SQL
相关文档
最新文档