码迷,mamicode.com
首页 > 数据库 > 详细

oracle执行多个pl/sql块

时间:2015-04-29 11:28:22      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:


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块

标签:

原文地址:http://www.cnblogs.com/kexb/p/4465340.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!