oracle執行多筆sql,oracle执行多个pl/sql块

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
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值