2014-09-20 65 views
2

使用update我试图用对于选择内更新,但我得到了错误:与光标

Invalid cursor reference. Relation mytable is not found in cursor TCUR.

下面是该过程:

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 

我应该怎样解决这个问题? 这是火鸟数据库

回答

1

有两个不同的问题。首先:可更新游标需要FOR UPDATE子句,否则它是只读的。第二:可更新的游标只允许引用一个表,所以你的查询不能更新。