我想问一个与绩效相关的问题,我的问题是哪种方法最好
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;
答案 0 :(得分:1)
如果您的函数update
只是调用相同的sql更新,那么它是否可以直接从存储函数中调用它。
通常,最好的方法是使用一个sql语句(更新或合并)来更新整个数据集所需的内容。
但你更新看起来很奇怪:
在第一个pl / sql块中,您声明变量test
。测试等于null
。然后,您通过与null
进行比较来尝试更新表 - 不会影响任何行。
在第二个pl \ sql块中,您也声明变量test
,但使用varable temp
。它会在编译时引发错误。