1. 在Pl/sql 中使用 sql

   1:  /*
   2:   * 一个 pl/sql 语句块, 只是一个容器, 是表明一个整体的容器, 容器里可以放置多个sql语句
   3:  */
   4:   
   5:  declare 
   6:      v_zip    zipcode.zip%type;
   7:      v_user    zipcode.created_by%type;
   8:      v_date    zipcode.created_date%type;
   9:  begin
  10:      -- statement 1
  11:      select 43438, user, sysdate
  12:        into v_zip, v_user, v_date
  13:        from dual;
  14:      
  15:      -- statement 2
  16:      insert into zipcode(zip, created_by, careate_date, modified_by,
  17:                          modified_date)
  18:      values(v_zip, v_user, v_date, v_user,
  19:              v_date);
  20:  end;
  21:  /
  22:  show errors;
  23:      

2. 在 pl/sql 中使用 commit, rollback, savepoint

   1:  /*
   2:   * ROLLBACK [WORK] to SAVEPOINT name;
   3:  */
   4:   
   5:  begin
   6:      insert into student(student_id, last_name, zip, reistration_date,
   7:                          created_by, created_date, modified_by, modified_date)
   8:      values(student_id_seql.nextval, 'Tashi', 10015, '01-一月-99',
   9:              'Student', '01-一月-99', 'studenta', '01-一月-99');
  10:      savepoint A;        -- A is work name
  11:      
  12:      insert into student(student_id, last_name, zip, reistration_date,
  13:                          created_by, created_date, modified_by, modified_date)
  14:      values(student_id_seql.nextval, 'bbb', 10015, '01-一月-99',
  15:              'Student', '01-一月-99', 'studentb', '01-一月-99');
  16:      savepoint B;        -- B is work name
  17:      
  18:      insert into student(student_id, last_name, zip, reistration_date,
  19:                          created_by, created_date, modified_by, modified_date)
  20:      values(student_id_seql.nextval, 'ccc', 10015, '01-一月-99',
  21:              'Student', '01-一月-99', 'studentc', '01-一月-99');
  22:      savepoint C;        -- C is work name
  23:      
  24:      rollback to b;
  25:  end;

如上代码执行完后, 由于 rollback to b, 所以, 第3段代码执行的插入操作就会被rollback, 所以最后的结果是插入了2条记录.

所以, 综上, rollback 到之前的一个保存点 savepoint, 那么该保存点之下的所有sql语句都会被rollback, 而保存点savepoint之上的sql没有被rollback.

pl/sql 实例精解 03的更多相关文章

  1. pl/sql 实例精解 05

    本章主要讨论 case 语句 1: case [SELECTOR] 2: when expression 1 then statement 1; 3: when expression 2 then s ...

  2. pl/sql 实例精解 04

    本章主要讨论, IF 语句的应用. 1: if condition1 then 2: statement1 3: elsif condition2 then 4: statement2 5: else ...

  3. ORACLE PL/SQL 实例精解之第六章 迭代控制之一

    6.1 简单循环 简单循环,就想其名称一张,是一种最基本循环.简单循环具有如下结构 LOOP STATEMENT 1; STATEMENT 2; ... STATEMENT N; END LOOP; ...

  4. ORACLE PL/SQL 实例精解之第三章 PL/SQL中的SQL

    3.1 在PL/SQL中使用DML 在PL/SQL语块中,两种变量赋值a. := 初始化.b. select into语法,PL/SQL语块的声明部分被声明的变量,后期可以使用选择语句进行赋值. 3. ...

  5. ORACLE PL/SQL 实例精解之第二章 通用编程语言基础

    通用编程语言基础 2.1PL/SQL编程基础 1. 字符类型:支持四中类型字符:字母,数字,符号和空格,组合一个或多个字符就会创建一个词汇单元 2. 词汇单元 a.标识符必须以字符开头 b.保留字是p ...

  6. ORACLE PL/SQL 实例精解之第一章 PL/SQL概念

    1.传统一层一层传数据,而PLSQL作为独立的单元返回客户端,减少查询,减少网路传输的往返,高效 2.PL/SQL语句块 分为两种:命名(子程序,函数,包保存在数据库中,后期可以根据名称进行引用),匿 ...

  7. pl/sql 实例精解 06

    1. 简单循环 1: LOOP 2: statement1; 3: statement2; 4: EXIT WHEN condition; 5: END LOOP; 6: statement3; 也可 ...

  8. pl/sql 实例精解 08

    1: EXCEPTION 2: WHEN EXCEPTION_NAME THEN 3: ERROR-PROCESSING STATEMENTS; 写在 begin 与 end 的之间的处理异常块. 常 ...

  9. pl/sql 实例精解 07

    这章主要讨论 oracle11g 新特性, continue, continue when 语句 continue 的作用同其他编程语言一样. continue when condition 只是当条 ...

随机推荐

  1. 亲測,Eclipse报"An error has occurred,See error log for more details. java.lang.NullPointerException"

    Eclipse报"An error has occurred,See error log for more details. java.lang.NullPointerException&q ...

  2. android工具类(2)NetWorkHelper 网络工具类

    import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkIn ...

  3. java中异常介绍

    一.异常概述 异常处理已经成为衡量一门语言是否成熟的标准之一,目前的主流编程语言如C++.C#.Ruby.Python等,大都提供了异常处理机制.增加了异常处理机制后的程序有更好的容错性,更加健壮. ...

  4. Game Center Achievements and Leaderboards part 1 <转>

    原地址:http://blog.sina.com.cn/s/blog_6b3661a901013xb0.html This is the first part of a step-by-step tu ...

  5. java 内部类、匿名内部类、嵌套类的使用

    我们都知道java的类能够由public.default(缺省.不写)来修饰,分别表示的含义是同意公开訪问以及仅仅同意包内其他类訪问,而同一包内的类一般是为完毕同一个功能而协作.      除此之外, ...

  6. java设计模式之组合

    听说你们公司最近新推出了一款电子书阅读应用,市场反应很不错,应用里还有图书商城,用户可以在其中随意选购自己喜欢的书籍.你们公司也是对此项目高度重视,加大了投入力度,决定给此应用再增加点功能. 好吧,你 ...

  7. Ubuntu编码问题

    Ubuntu编码问题 root@magus-18:/srv/rorapps/fgcc# rails -v Sorry, command-not-found has crashed! Please fi ...

  8. Cacti监控mysql数据库服务器实现过程

    Cacti监控mysql数据库服务器实现过程 2014-05-29      0个评论    来源:Cacti监控mysql数据库服务器实现过程   收藏    我要投稿 1 先在cacti服务器端安 ...

  9. newWindow 弹出的新窗口居中显示

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  10. ubuntu安装Skype 4.3

    Install Skype 4.3 Step 1: Remove previous version sudo apt-get remove skype skype-bin:i386 skype:i38 ...