zoukankan      html  css  js  c++  java
  • 关键字(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语句结束为止。


  • 相关阅读:
    查看当前的数据和索引的总大小
    PXC安装
    [学习笔记]位运算
    PXC小结
    java算法集训代码填空题练习3
    mha配置参数详解
    [学习笔记]二分图
    Java 实现 蓝桥杯 等额本金
    账号权限问题导致 masterha_check_repl 检查失败
    [学习笔记]0/1分数规划
  • 原文地址:https://www.cnblogs.com/bitter-first-sweet-last/p/3972792.html
Copyright © 2011-2022 走看看