Oracle_PL/SQL的基本写法_BEGIN_END块结构及简单的事务实现

前端之家收集整理的这篇文章主要介绍了Oracle_PL/SQL的基本写法_BEGIN_END块结构及简单的事务实现前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

http://blog.csdn.net/ls_man/article/details/16959615


虽然之前写了不少Oracle上的sql语句,但是没有抽出时间对Oracle进行一个系统的学习,实践固然重要,但没有一个理论上的规范学习与理解,在实践中就不能举一反三,就不能写出高规范高质量的sql语句。

  1. --PL/sql基本写法
  2. --说明:声明、异常处理部分为可选,视具体程序而定
  3. --博客记录点滴http://blog.csdn.net/ls_man转载注明出处
  4. DECLARE--声明变量
  5. AINTEGER;--只声明
  6. BFLOAT:=0;--带赋值的声明
  7. CFLOAT;
  8. BEGIN--可执行语句开始
  9. DBMS_OUTPUT.put_line('开始执行可执行语句块![http://blog.csdn.net/ls_man转载注明出处]');
  10. A:=1.5;
  11. DBMS_OUTPUT.put_line('A='||A);
  12. DBMS_OUTPUT.put_line('B='||B);
  13. C:=A/B;--会引发分母为0的异常,下面的两条输出语句将无法执行
  14. DBMS_OUTPUT.put_line('C='||C);
  15. DBMS_OUTPUT.put_line('可执行语句块执行完毕![http://blog.csdn.net/ls_man转载注明出处]');
  16. EXCEPTION--异常处理
  17. WHENOTHERSTHEN
  18. DBMS_OUTPUT.put_line('[PL/sql基本写法]中出现异常,错误代码:ORA'||sqlcode);
  19. END;--可执行语句结束
  20. /--该符号表示执行这段PL/sql代码

执行后的输出

copy

开始执行可执行语句块![http://blog.csdn.net/ls_man转载注明出处]
  • A=2
  • B=0
  • [PL/SQL基本写法]中出现异常,错误代码:ORA-1476

  • 我们再看一下如何通过异常处理实现数据库事务:

    copy

    --PL/SQL事务
  • --说明:有多条修改数据的语句执行,如果其中某条出错,之前的更改也不会记入数据库
  • --1.先创建一个测试表
  • DECLARE
  • V_SQL_DROP_TABLEVARCHAR2(50):='DROPTABLEMY_TEST';
  • V_SQL_CREATE_TABLEVARCHAR2(100):='CREATETABLEMY_TEST(NOT_NULLVARCHAR2(20)NOTNULL,ONLY_INTINTEGER)';
  • BEGIN
  • EXECUTEIMMEDIATEV_SQL_CREATE_TABLE;--创建测试表
  • EXCEPTION
  • --如果表已存在,则会引发异常
  • THEN
  • EXECUTEIMMEDIATEV_SQL_DROP_TABLE;--先删除
  • --再创建
  • END;
  • /
  • --2.用我们刚创建的测试表进行测试
  • DECLARE
  • V_COUNT--表中记录的行数
  • V_INT_VALMY_TEST.ONLY_INT%TYPE;--使用%TYPE关键字参照某表某字段类型声明变量
  • BEGIN
  • V_INT_VAL:=123456;
  • --插入一条正确的数据
  • INSERTINTOMY_TESTVALUES('TEST_SUCCESS',V_INT_VAL);
  • --查询条数为1条,我们发现插入成功了
  • SELECTCOUNT(*)INTOV_COUNTFROMMY_TEST;
  • DBMS_OUTPUT.put_line('MY_TEST表中有'||V_COUNT||'条记录');
  • --插入一条错误的数据,因为第二个字段为int型,插入字符数据肯定会出错
  • VALUES('TEST_FAIL','ABC');
  • --最后提交更改
  • COMMIT;
  • --异常处理
  • ROLLBACK;--异常时回滚,这样第一次插入的正确数据也不会保存到数据库
  • DBMS_OUTPUT.put_line('[PL/SQL事务]中出现异常,错误代码:ORA'||sqlcode);
  • --我们验证一下表里的数据为0条
  • DBMS_OUTPUT.put_line('回滚后,MY_TEST表中有'||V_COUNT||'条记录');
  • --可执行语句结束
  • /copy
    MY_TEST表中有1条记录
  • [PL/SQL事务]中出现异常,错误代码:ORA-1722
  • 回滚后,MY_TEST表中有0条记录

    1. 版权:求知域http://www.qqextra.com,http://blog.csdn.net/ls_man转载请注明出处
    原文链接:https://www.f2er.com/oracle/209600.html

    猜你在找的Oracle相关文章