2014-09-20 66 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子句,否則它是隻讀的。第二:可更新的遊標只允許引用一個表,所以你的查詢不能更新。