FETCH和FETCH BULK有什么区别?

  • 本文关键字:FETCH 区别 BULK oracle plsql
  • 更新时间 :
  • 英文 :


我正在实践中学习包,这是我注意到的两个非常相似的包之间的区别。

这两行在功能上有什么不同?

FETCH key INTO id, source, file;
FETCH BULK key COLLECT INTO id, source, file;

编辑:此外,当我尝试使用第二行编译包时,我得到以下错误:

  • 错误(259,49):PLS-00497:不能在INTO列表中混合单行和多行(BULK)

FETCH将游标结果集中的下一行检索为一个或多个标量变量。FETCH BULK将所有行(不超过可选的LIMIT)检索到一个或多个集合中。参见Fetch文档。编译错误(PLS-00497:…)是您试图将所有行提取到标量变量列表中。除了语法错误,应该是FETCH column_list BULK COLLECT INTO collection_name(s)

批量收集:

declare  
type key_list is table of some_table.key%type; 
key_array  key_list; 
cursor c_keys is 
(select keys from some_table); begin

begin
open c_keys; 
fetch c_keys 
bulk collect 
into key_array;
close c_keys; 
-- process each of the keys in the key_list array
for index_var in 1 .. key_array.count
loop
--process key_array(index_var) ;  Lets just "print it" 
dbms_output.put_line( 'Key(' || index_var || ' is ' ||key_array(index_var));   
end loop; 
end ;  


最新更新