PL/SQL程序控制结构及在PL/SQL中更改数据和管理事务

1.条件控制

A. IF条件分支语法:

if (条件1) then

语句;

elsif (条件2) then

语句;

elsif (条件3) then

语句;

else

语句;

end if;

B . case条件分支:等值比较、条件比较、case表达式

a.等值比较语法:

CASE  条件判断

WHEN      条件值的表达式    THEN       要执行的条件操作     ;

…….

[ELSE   ……..]

END   CASE;

b. 条件比较语法:

CASE

WHEN   不同比较条件  THEN       要执行的条件操作     ;

…….

[ELSE   ……..]

END   CASE;

2.  循环控制

A. 基本循环:无论是否满足条件,语句至少执行一次

语法:LOOP

……..

EXIT  [WHEN   条件语句];

END   LOOP;

B. WHILE循环:只有条件为真时,才会执行

语法: WHILE  条件语句  LOOP

…………………………………..

END   LOOP;

C. FOR循环

语法: FOR   循环计数器    IN   [REVERSE]   下限.. 上限   LOOP

……………………………………………………………………………………

END   LOOP;

D. 嵌套循环和标号:定义标号:<<   标号名称  >>

3. 顺序控制

A.GOTO语句:用于跳转到指定<<标号>>去执行语句。

缺点是会增加程序的复杂性,降低可读性,所以Oracle建议昼不要使用。

B.  NULL语句:空语句,执行没有任何实际效果,通常占位置用

4. 异常处理

A.异常有两种类型:

a. 预定义异常 : 当 PL/SQL 程序违反 Oracle 规则或超越系统限制时隐式引发

b. 用户定义异常  :  用户可以在 PL/SQL 块的声明部分定义异常,自定义的异常通过 RAISE 语句显式引发

B. 定义异常语法:异常名称      EXCEPTION;

PRAGMA   EXCEPTION_INIT(异常名称, 错误号);

C. 抛出异常语法

a.  RAISE   异常名称;

b.  RAISE_APPLICATION_ERROR(错误号 , 错误描述 [, {TRUE|FALSE}]);

D. 处理异常语法

EXCEPTION

WHEN   …….        THEN

…………….

WHEN                     THEN

WHEN OTHERS   THEN

………….

5.  DML操作的游标属性

A.  隐式游标

a. 名称:SQL

b. 属性:SQL%属性名

c. 常见属性

SQL%FOUND:操作到数据

SQL%NOTFOUND:没有操作到数据

SQL%ROWCOUNT:操作的记录数

B.   DML语句的RETURNING字句:返回SQL执行以后的结果

6.  用ForAll语句批量执行DML

A. ForAll语句语法

ForAll 索引 in 开始..结束

sql语句;  --注意,只有一句!

B . 在INSERT语句上使用批量绑定:首先要给集合元素赋值,然后再使用ForAll语句批量绑定

C.  ForAll的游标属性

a.  SQL%FOUND:操作到数据

b.  SQL%NOTFOUND:没有操作到数据

c.  SQL%ROWCOUNT:操作的记录数

d.  SQL%BULK_ROWCOUNT:返回批量执行时第i个元素所作用的行数

7. PL/SQL中的数据库事务管理

A.  事务概念:事务就是一个完整的逻辑工作单元,由多个操作组成。所有操作要么全部成功,要么全部失败

B.  事务特点: ACID:原子性、一致性、隔离性、(永)持久性

C.  事务控制流程

开始事务

自动执行第一条SQL开始

执行SQL

可能执行多条SQL

提交或回滚

commit或rollback

D.  锁的概念:锁是数据库用来控制共享资源并发访问的机制、锁用于保护正在被修改的数据、直到提交或回滚了事务之后,其他用户才可以更新数据

E. 锁的类型:行级锁、表级锁

a.行级锁:对正在被修改的行进行锁定。其他用户可以访问除被锁定的行以外的行

在使用以下语句时,Oracle会自动应用行级锁:

a.  INSERT

b.  UPDATE

c.  DELETE

d.  SELECT … FOR UPDATE

使用COMMIT或ROLLBACK语句释放锁

b. 表级锁:锁定整个表,限制其他用户对表的访问

语法: LOCK TABLE table_name IN mode MODE;

F.  死锁:当两个事务相互等待对方释放资源时,就会形成死锁、Oracle会自动检测死锁,并通过结束其中的一个事务来解决死锁

8. 事务隔离级别

A.  分类

a.  未提交读

读其它用户没有提交的数据,又称脏读

b.提交读:Oracle支持,这也是默认支持的级别(可能会发生不可重复读数据异常)

c.可重复读: Oracle不支持(可能会发生幻读数据异常)

d.串行读: Oracle支持,不过效率低

9.  数据库事务实现机制:通过日志文件实现

时间: 2024-08-10 02:09:11

PL/SQL程序控制结构及在PL/SQL中更改数据和管理事务的相关文章

使用Hive或Impala执行SQL语句,对存储在HBase中的数据操作

使用Hive或Impala执行SQL语句,对存储在HBase中的数据操作 Hive Impala HBase HiveQL 大数据 使用Hive或Impala执行SQL语句,对存储在HBase中的数据操作 〇.摘要 一.基础环境 二.数据存储在HBase中,使用Hive执行SQL语句 Ⅰ.创建Hive外部表 Ⅱ.从HBase读 Ⅲ.向HBase写 三.数据存储在HBase中,使用Impala执行SQL语句 Ⅰ.从HBase读 Ⅱ.向HBase写 四.综上所述 〇.摘要 Hive是基于Hadoop

程序一 用记事本建立文件src.dat,其中存放若干字符。编写程序,从文件src.dat中读取数据,统计其中的大写字母、小写字母、数字、其它字符的个数,并将这些数据写入到文件test.dat中。

用记事本建立文件src.dat,其中存放若干字符.编写程序,从文件src.dat中读取数据,统计其中的大写字母.小写字母.数字.其它字符的个数,并将这些数据写入到文件test.dat中. #include<stdio.h>#include<stdlib.h>#include<string.h>int main(){ FILE*fp1,*fp2; char ch; int da=0,xiao=0,shuzi=0,qita=0; if((fp1=fopen("sr

PL/SQL程序设计基础语法详解(一)

一.什么是PL/SQL(Procedure Language/SQL) 概念:PLSQL是Oracle对sql语言的过程化扩展 指在SQL命令语言中增加了过程处理语句(如分支.循环等),使SQL语言具有过程处理能力. PL/SQL的结构: declare 说明部分 (变量说明,光标申明,例外说明 ] begin 语句序列 (DML语句]- exception 例外处理语句 End; 简单的PL/SQL程序 如果是在命令行中需要使用 set serveroutput on先打开显示 declare

Oracle数据库之PL/SQL程序设计基础

PL/SQL程序设计基础 一.PL/SQL块结构 前边我们已经介绍了PL/SQL块的结构,再来回顾一下: DECLARE /* * 声明部分——定义常量.变量.复杂数据类型.游标.用户自定义异常 */ BEGIN /* * 执行部分——PL/SQL语句和SQL语句 */ EXCEPTION /* * 异常处理部分——处理运行异常 */ END; /*块结束标记 */ 要实现PL/SQL程序设计,先介绍如下的基本内容: 二.标识符 PL/SQL程序设计中的标识符定义与SQL的标识符定义的要求相同:

pl/sql程序语言

pl/sql程序基础知识: pl/sql(procedural language/sql)oracle在标准sql上面的扩展,不仅简单的sql语句,还具有一般语言的特性:变量,常量,流程控制和循环,错误处理机制.是一个功能完善强大的过程化语言. 它的编程基本单位是块,复杂的功能都是多个块组成 我们来看看它的实列代码: 块结构: declear --定义部分,可选 /*定义部分--变量,常量,游标,异常,复杂数据类型*/ begin --执行部分 /*pl/sql语句和SQL语句;*/ excep

二十五、oracle pl/sql进阶--控制结构(分支,循环,控制)

一.pl/sql的进阶--控制结构在任何计算机语言(c,java,pascal)都有各种控制语句(条件语句,循环结构,顺序控制结构...),在pl/sql中也存在这样的控制结构.在本部分学习完成后,希望大家达到:1.使用各种if语句2.使用循环语句3.使用控制语句——goto和null(goto语句不推荐使用): 二.条件分支语句pl/sql中提供了三种条件分支语句if—then,if–then–else,if–then–else if–then.这里我们可以和java语句进行一个比较. 1).

pl/sql的控制结构,分支、循环、控制

一.pl/sql的进阶--控制结构在任何计算机语言(c,java,pascal)都有各种控制语句(条件语句,循环结构,顺序控制结构...),在pl/sql中也存在这样的控制结构.在本部分学习完成后,希望大家达到:1.使用各种if语句2.使用循环语句3.使用控制语句--goto和null(goto语句不推荐使用): 二.条件分支语句pl/sql中提供了三种条件分支语句if-then,if–then–else,if–then–else if–then.这里我们可以和java语句进行一个比较. 1).

PL/SQL程序基础设计

一.PL/SQL块结构 前边我们已经介绍了PL/SQL块的结构,再来回顾一下: DECLARE /* * 声明部分——定义常量.变量.复杂数据类型.游标.用户自定义异常 */ BEGIN /* * 执行部分——PL/SQL语句和SQL语句 */ EXCEPTION /* * 异常处理部分——处理运行异常 */ END; /*块结束标记 */ 要实现PL/SQL程序设计,先介绍如下的基本内容: 二.标识符 PL/SQL程序设计中的标识符定义与SQL的标识符定义的要求相同: 标识符名第一个字符必须为

Oracle数据库之PL/SQL程序基础设计

http://www.cnblogs.com/hellokitty1/p/4572930.html DECLARE /* * 声明部分——定义常量.变量.复杂数据类型.游标.用户自定义异常 */ BEGIN /* * 执行部分——PL/SQL语句和SQL语句 */ EXCEPTION /* * 异常处理部分——处理运行异常 */ END; /*块结束标记 */ 要实现PL/SQL程序设计,先介绍如下的基本内容: 二.标识符 PL/SQL程序设计中的标识符定义与SQL的标识符定义的要求相同: 标识