Proc編譯執行出現ORA-1002:fetch out of sequence

yezhibin發表於2011-12-29

     在編譯執行proc程式時候,出現ora-1002錯誤,程式中簡單步驟:

1、開啟遊標,
    
2、通過捆綁變數v1,迴圈執行select col_name from table_name where colB= :v1,獲得結果集。

3、迴圈完成之後,關閉遊標

類似語句如下:

exec sql declare C cursor for S;
exec sql open c using :v1
while ( xxxx)
 {
   /* v1 有多個值*/  
   執行select col_name from table_name where colB=:v1
   }  
exec sql close c;

問題解決:

在oracle 10g和11g,出現類似上述查詢語句時候,在同一個遊標下,第一次賦予捆

綁變數的值,查詢沒有問題,但在第二次賦予捆綁變數新值的時候,有可能出現

ORA-1002錯誤。

所以修改語句將開啟和關閉遊標放置在迴圈語句的頭和尾,每一次迴圈,賦予新的捆綁變數值,採用新的遊標。類似於:

while ( xxxx)
 {
     exec sql open c using :v1
   /* v1 有多個值*/  
   執行select col_name from table_name where colB=:v1;
   exec sql close c;
}


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/354732/viewspace-714114/,如需轉載,請註明出處,否則將追究法律責任。

相關文章