DECLARE  
  V_SQL_DROP_TABLE   VARCHAR2(50) := 'DROP TABLE MY_TEST2';  
  V_SQL_CREATE_TABLE VARCHAR2(100) := 'CREATE TABLE MY_TEST2(NOT_NULL VARCHAR2(20) NOT NULL, ONLY_INT INTEGER)';  
BEGIN  
  EXECUTE IMMEDIATE V_SQL_CREATE_TABLE; -- 创建测试表  
EXCEPTION  
  -- 如果表已存在,则会引发异常  
  WHEN OTHERS THEN  
    EXECUTE IMMEDIATE V_SQL_DROP_TABLE; -- 先删除  
    EXECUTE IMMEDIATE V_SQL_CREATE_TABLE; -- 再创建  
END;  
/  
--2.用我们刚创建的测试表进行测试  
DECLARE   
  V_COUNT INTEGER; -- 表中记录的行数  
  V_INT_VAL MY_TEST.ONLY_INT%TYPE; -- 使用%TYPE关键字参照某表某字段类型声明变量  
BEGIN  
  V_INT_VAL := 123456;  
  -- 插入一条正确的数据  
  INSERT INTO MY_TEST2 VALUES ('TEST_SUCCESS', V_INT_VAL);  
  -- 查询条数为1条,我们发现插入成功了  
  SELECT COUNT(*) INTO V_COUNT FROM MY_TEST;  
  DBMS_OUTPUT.put_line('MY_TEST表中有' || V_COUNT || '条记录');  
 
  -- 插入一条错误的数据,因为第二个字段为int型,插入字符数据肯定会出错  
 /* INSERT INTO MY_TEST VALUES ('TEST_FAIL', 'ABC');  */
 
  -- 最后提交更改  
  COMMIT;  
EXCEPTION  
  -- 异常处理  
  WHEN OTHERS THEN  
    ROLLBACK; -- 异常时回滚,这样第一次插入的正确数据也不会保存到数据库  
    DBMS_OUTPUT.put_line('[PL/SQL 事务]中出现异常,错误代码:ORA' || sqlcode);  
    -- 我们验证一下表里的数据为0条  
    SELECT COUNT(*) INTO V_COUNT FROM MY_TEST;  
    DBMS_OUTPUT.put_line('回滚后,MY_TEST表中有' || V_COUNT || '条记录');  
END; -- 可执行语句结束  
/ -- 该符号表示执行这段PL/SQL代码

oracle执行多个pl/sql块的更多相关文章

  1. pl/sql基础知识—pl/sql块介绍

    n  介绍 块(block)是pl/sql的基本成型单元,编写pl/sql程序实际上就是编写pl/sql块.要完成相对简单的应用功能,可能只需要编写一个pl/sql块:但是如果要想实现复杂的功能,可能 ...

  2. Oracle PL/SQL块

    PL/SQL块 简介 :PL/SQL是 Procedure Language & Structured Query Language 的缩写,是ORACLE公司对标准数据库语言的扩展 PL/S ...

  3. 九、dbms_ddl(提供了在PL/SQL块中执行DDL语句的方法)

    1.概述 作用:提供了在PL/SQL块中执行DDL语句的方法,并且也提供了一些DDL的特殊管理方法. 2.包的组成 1).alter_compile说明:用于重新编译过程.函数和包语法:dbms_dd ...

  4. oracle中plsql练习题-----编写一个PL/SQL块,输出所有员工的员工姓名、员工号、工资和部门号

    一.思路:首先输出需要变量接收,需要声明变量,于是考虑什么变量类型比较合适,在这我用的是table类型,最后,查询出来,循环输出即可. 二.具体实现 -- 编写一个PL/SQL块,输出所有员工的员工姓 ...

  5. oracle 10g 学习之PL/SQL简介和简单使用(10)

    PL /SQL是一种高级数据库程序设计语言,该语言专门用于在各种环境下对ORACLE数据库进行访问.由于该语言集成于数据库服务器中,所以PL/SQL代码可以对数据进行快速高效的处理.PL/SQL是 P ...

  6. Oracle数据库之开发PL/SQL子程序和包

    Oracle数据库之开发PL/SQL子程序和包   PL/SQL块分为匿名块与命名块,命名块又包含子程序.包和触发器. 过程和函数统称为PL/SQL子程序,我们可以将商业逻辑.企业规则写成过程或函数保 ...

  7. Oracle学习DaySix(PL/SQL续)

    一.游标 在 PL/SQL 程序中,对于处理多行记录的事务经常使用游标来实现.游标是一个指向上下文的句柄( handle)或指针.通过游标,PL/SQL 可以控制上下文区和处理语句时上 下文区会发生些 ...

  8. Oracle学习DayFive(PL/SQL)

    一.PL/SQL简介  PL/SQL 是 Procedure Language & Structured Query Language 的缩写.PL/SQL 是对 SQL 语言存储过程语言的扩 ...

  9. PL/SQL编程基础(一):PL/SQL语法简介(匿名PL/SQL块)

    PL/SQL PL/SQL是Oracle在关系数据库结构化查询语言SQL基础上扩展得到的一种过程化查询语言. SQL与编程语言之间的不同在于,SQL没有变量,SQL没有流程控制(分支,循环).而PL/ ...

随机推荐

  1. python json.loads json.dumps(ensure_ascii = False) 汉字乱码问题解决

    python 转换为json时候 汉字编码问题 2017年03月23日 18:50:04 阅读数:5604 有这样一个需求: 需要一个json 文件 数据从数据库里查询出来 1. 设置文件头 # -* ...

  2. 10.Action中的method属性

    转自:https://wenku.baidu.com/view/84fa86ae360cba1aa911da02.html 在struts1.x中我们知道通过继承DispatchAction可以实现把 ...

  3. XE6 c++builder 设置 font size GetPropInfo SetOrdProp

    PPropInfo ppi; PTypeInfo pti; TTypeKinds ttk; TRttiContext context; TRttiType *rttiType TObject* obj ...

  4. ABAP-反调JCO服务

  5. ABAP-SAP的LUW和DB的LUW的区别

    转载:http://www.cnblogs.com/helileng/archive/2010/10/14/1851409.html LUW是Logical Unit of Work,也就是逻辑工作单 ...

  6. visual stdio 工程 宏

    $(SolutionDir)  solution目录 $(ProjectDir) Project目录 $(TargetDir) 目标文件夹,如编译出的exe文件所在的目录 $(Configuratio ...

  7. unity WWW加载进度条

    using UnityEngine; using System.Collections; public class testProgress : MonoBehaviour { void Start ...

  8. sqlserver分布式 用触发器插入数据

    这个月总公司收购了一家小公司,这家小公司的数据库用的是32位的 Sql2000 ,已经使用很长一段时间了,系统也比较稳定.本着节约成本的原则,总公司保留原公司的一套管理系统,但要求重要数据每天上传到总 ...

  9. Session的作用和使用场景

    1.session何时被创建? 客户首次访问服务器时,回话session对象被创建并分配一个唯一的Id,同时id号发送到客户端,并存入cookie,使得客户端session对象和服务器端一致. 2.如 ...

  10. MySQL高级-索引

    1.索引是什么 索引(Index)是帮助MySQL高效获取数据的数据结构.可以得到索引的本质:索引是数据结构. 可以理解为“排好序的快速查找数据结构” 在数据之外,数据库系统还维护着满足特定查找算法的 ...