性能分析(在循环中选择循环中的函数调用)

时间:2016-11-08 05:47:11

标签: sql database oracle plsql

我想问一个与绩效相关的问题,我的问题是哪种方法最好

1在循环中添加子查询

declare
test varchar2(50);

FOR Lcntr IN 1..20

LOOP

   update emp set empno='50'  where empname=test;

END LOOP;

2在循环中添加函数调用或者使用上述查询的函数并在循环中调用它

declare

test varchar2(50);

FOR Lcntr IN 1..20
LOOP

  temp:=update('argument');

END LOOP;

1 个答案:

答案 0 :(得分:1)

如果您的函数update只是调用相同的sql更新,那么它是否可以直接从存储函数中调用它。 通常,最好的方法是使用一个sql语句(更新或合并)来更新整个数据集所需的内容。

但你更新看起来很奇怪: 在第一个pl / sql块中,您声明变量test。测试等于null。然后,您通过与null进行比较来尝试更新表 - 不会影响任何行。

在第二个pl \ sql块中,您也声明变量test,但使用varable temp。它会在编译时引发错误。