• 关键字(1)


    伪表dual

    raise_application_error 捕获异常

    SQLCODE返回Oracle错误的序号,而SQLERRM返回的是相应的错误消息

    当一个事务回滚到一个savepoint,发生下列事件:

    1)Oracle仅回滚savepoint之后的语句。
    2)Oracle保留这一savepoint,但所有建立于此后的savepoints丢失。
    3)Oracle释放在该savepoint后获得的所有表、行锁,但保留之前获得的所有锁。 事务保持活动并可继续。 无论何时一个会话在等待事务,到savepoint的回滚不会释放行锁。为了确保事务如果无法获得锁也不会悬挂(hang),在执行UPDATE或DELETE前使用FOR UPDATE ... NOWAIT。(这里指回滚的savepoint之前获得的锁。该savepoint后获得的行锁会被释放,之后执行的语句也会被彻底回滚。)

    注意:
    1.savepoint 名字保持唯一
    2.如果后面新设置的一个savepoint的名字和前面的一个savepoint名字重复,前一个savepoint将被取消
    3.设置savepoint后,事务可以继续commit,全部回退或者回退到具体一个savepoints
    4.撤销的处理必须是在没有发出commit命令的前提下才能有效。
     
     
    bulk collect可以将查询结果一次性地加载到collections中。而不是通过cursor一条一条地处理(通过bulk collect减少loop处理的开销,使用Bulk Collect提高Oracle查询效率)。
    可以在select into,fetch into,returning into语句使用bulk collect。注意在使用bulk collect时,所有的into变量都必须是collections.通过上面的测试和分析,我们可以看到Bulk Collect批查询在某种程度上可以提高查询效率,它首先将所需数据读入内存,然后再统计分析,这样就可以提高查询效率。但是,如果Oracle数据库的内存较小,Shared Pool Size不足以保存Bulk Collect批查询结果,那么该方法需要将Bulk Collect的集合结果保存在磁盘上,在这种情况下,Bulk Collect方法的效率反而不如其他两种方法,有兴趣的读者可以进一步测试。另外,除了Bulk Collect批查询外,我们还可以使用FORALL语句来实现批插入、删除和更新,这在大批量数据操作时可以显著提高执行效率。
     
    for update
    该语句用来锁定特定的行(如果有where子句,就是满足where条件的那些行)。当这些行被锁定后,其他会话可以选择这些行,但不能更改或删除这些行,直到该语句的事务被commit语句或rollback语句结束为止。


  • 相关阅读:
    ckeditor+粘贴word
    java+批量下载大文件
    链接批量下载文件
    java+大文件上传解决方案
    php+提高大文件上传速度
    富文本粘贴word文档内容图片处理
    软件开发工具(三)——理论与开发过程
    c结构体里的数组与指针
    Java解析Property文件
    怎样高速编译mediatekoperator以下代码
  • 原文地址:https://www.cnblogs.com/bitter-first-sweet-last/p/3972792.html
Copyright © 2020-2023  润新知