• 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.  数据库事务实现机制:通过日志文件实现

  • 相关阅读:
    Python 面向对象
    pymysql增删改查
    pymysql简单链接示例
    mysql权限管理
    mysql五补充部分:SQL逻辑查询语句执行顺序
    mysql安装与基本管理
    mysql索引原理与慢查询优化2
    ftp 服务
    Linux 并发链接数
    Linux
  • 原文地址:https://www.cnblogs.com/lxh1197412986/p/4621976.html
Copyright © 2020-2023  润新知