站点图标 江湖人士

Oracle学习:批量SQL实例分析与比较

Oracle学习:批量SQL实例分析与比较

Oracle学习:批量SQL实例分析与比较 1

【IT168手艺】PL/SQL引入过程化言语的响应元素,好比前提分支或者轮回,不外,SQL本身仍然作为主体嵌套于此中,因为需要SQL引擎才能施行SQL号令,对于PL/SQL法式,往往具有很多PL/SQL引擎 – SQL引擎之间的交互,过多如许的交互会对机能发生负面影响。

虽然从内部施行机制上来说,两个轮回有很大的区别,但从语法上来说,还长短常雷同的。不外有一个小细节需要留意,就是FORALL语句并没有对应的END语句。

下面引见若何获取第一条语句所影响的行数,这需要利用SQL%BULK_ROWCOUNT:

假设有一条SQL查询,前往的记实中包含5行,那么若是在PL/SQL中施行此查询,会有5次的PL/SQL SQL交互,若是利用BULK COLLECT,能够降低到1次。

另一个INDEX BY调集的示例(现实上利用跟上例一样的FOR轮回也能够):

这现实上也好理解,由于上面的INSERT语句每次影响的只要一行,所以第二例中,保留的是轮回中最初一次施行的INSERT所影响的行数,当然是1;而因为FORALL语句会将所有语句一次性提交到数据库,这也使得我们能够利用RETURNING INTO + BULK COLLECT获取所有插入的数据

退出移动版