我尝试在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数据库
答案 0 :(得分:1)
有两个不同的问题。第一:可更新游标需要FOR UPDATE
子句,否则它是只读的。第二:可更新游标只允许引用一个表,因此您的查询无法更新。