使用光标更新

时间:2014-09-20 00:13:23

标签: sql firebird

我尝试在For Select中使用update但是我收到了错误:

  

无效的游标参考。在游标TCUR中找不到关系mytable。

以下是程序:

create or alter procedure MyPROC
returns (
    BIN_NO integer,
    QUANTITY integer)
as
declare variable V_BIN_TO integer;
declare variable V_BIN_FROM integer;
begin
  for
  select 
    mytable.bin_no,
    mytable.quantity
   from table2
   right outer join mytable on (table2.quote_id = mytable.quote_id)   
   into :bin_no, :quantity AS CURSOR tcur

  do begin
    v_bin_from = COALESCE(:v_bin_to,0) + 1;
    v_bin_to = COALESCE(:v_bin_to,0) + :quantity;

    update mytable set bin_no = v_bin_from || v_bin_to where current of tcur;

  end
end

我该如何解决这个问题? 这是Firebird数据库

1 个答案:

答案 0 :(得分:1)

有两个不同的问题。第一:可更新游标需要FOR UPDATE子句,否则它是只读的。第二:可更新游标只允许引用一个表,因此您的查询无法更新。