Oracle Forms Update Table使用多记录

时间:2018-05-29 01:04:12

标签: oracle for-loop oracle11g oracleforms oracle-cursor

我有一个在oracle表单中看起来像这样的多行块:

enter image description here

我的查询:

Select * from table1;

看起来像这样:

+-----+
|value|
+-----+
|    3|
|    3|
|    7|
|    1|
+-----+

是要更新为 new 列的表格中的列:

enter image description here

因此,当我重新查询时,我的表上的值应该是这样的:

+-----+
|value|
+-----+
|    4|
|    6|
|   14|
|    2|
+-----+

我尝试过post form commit:

for i in 1 .. :rec_count
loop
    update table1
    set value = :new
    where value = :value;
end loop;

但这只会更新我的最后一条记录。

1 个答案:

答案 0 :(得分:1)

使用 while循环并使用 first_record next_record 使用按钮 WHEN-BUTTON的内置插件可能是正确的-PRESSED 智能触发器,代码如下:

declare
   v_blk varchar2(25) := 'block1';
begin   
   go_block(v_blk);
   first_record;
 while ( :value is not null ) 
 loop
  :value := :value + nvl(:added_value,0);
   next_record;
 end loop;

   commit_form;    

   go_block(v_blk);
   execute_query;
end;