sybase中cursor的使用中死迴圈問題解決
今天發現居然出了個死迴圈.奇怪呀.
修改了一下while迴圈的條件.
while @@sqlstatus=0
發現報瞭如下錯誤:
582 : 0 : Number (582) Severity (16) State (3) Server (t10) Procedure (sms_clear_pre_sub) 遊標'cur_pack_fail_b'被隱式地關閉,原因是當前遊標位置由於更新或刪除而被刪除。遊標掃描位置不能恢復。這發生在對一張以上的表引用的時候。 (24000)
559 : 0 : Number (559) Severity (16) State (1) Server (t10) Procedure (sms_clear_pre_sub) 試圖使用未開啟的遊標'cur_pack_fail_b'。使用系統儲存過程sp_cursorinfo來得到更多資訊。 (24000)
仔細研究一下這個遊標
定義:
declare cur_pack_fail_b cursor for
select a.PACKAGE_ID
from SMS_SUBSCRIBE_STATUS a,xsmp.dbo.XSRV_APPLICATION_PACK_MAP b
where a.DEST_MSISDN=@dest_user
and a.APPLICATION_ID=b.APPLICATION_ID
and b.PACK_ID=@packid
and a.PACKAGE_ID>0
使用的時候是針對每個PACKAGE_ID 把SMS_SUBSCRIBE_STATUS表中的做了處理並刪除.
仔細看了一下,發現問題了.根據這個遊標,可以得到若干個完全相同的PACKAGE_ID,但是第一次迴圈的時候就刪除了,再一次迴圈的時候就出問題了.針對剛才的錯誤提示資訊,分析一下,明白了.加一個distinct就ok了.之前測試的時候測試的不完全,所以出了這個問題.
declare cur_pack_fail_b cursor for
select distinct a.PACKAGE_ID
from SMS_SUBSCRIBE_STATUS a,xsmp.dbo.XSRV_APPLICATION_PACK_MAP b
where a.DEST_MSISDN=@dest_user
and a.APPLICATION_ID=b.APPLICATION_ID
and b.PACK_ID=@packid
and a.PACKAGE_ID>0
覺得sybase的遊標做的太差,不如oracle.oracle使用for迴圈不用宣告那麼多變數,結構也簡單易用.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/47869/viewspace-900958/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【FastJSON】解決FastJson中“$ref 迴圈引用”的問題ASTJSON
- Ubuntu16.04使用者登入介面死迴圈問題的解決Ubuntu
- FastJson中迴圈引用的問題ASTJSON
- ConcurrentHashMap竟然也有死迴圈問題?HashMap
- 【Spring】Spring中的迴圈依賴及解決Spring
- cmd執行python死迴圈怎麼解決Python
- 在Unity中檢測死迴圈和卡死Unity
- Kotlin 中的迴圈全解Kotlin
- Mysql使用kill命令解決死鎖問題MySql
- 無限for迴圈(死迴圈)
- 雲端計算運維學習---Nginx服務中rewrite引數的死迴圈問題運維Nginx
- 怎麼解決引用計數 GC 的迴圈引用問題?GC
- Flask中的迴圈引用/匯入問題演示以及解決方案 | 藍圖的使用與解析 | 藍圖額外用法Flask
- 迴圈中的非同步&&迴圈中的閉包非同步
- Spring 迴圈依賴的三種方式(三級快取解決Set迴圈依賴問題)Spring快取
- 如何解決使用JSON.stringify時遇到的迴圈引用問題JSON
- 狀態模式中迴圈呼叫子元件時遇到的問題模式元件
- Linux while 迴圈中使用ssh問題LinuxWhile
- [譯] 減少 Python 中迴圈的使用Python
- 解決迴圈引用
- goland中npm無法使用的問題及解決方法GoLandNPM
- python面試題之“該死的for迴圈系列”(二)Python面試題
- 解決Oracle死鎖問題步驟Oracle
- JQuery中ajax的使用與快取問題的解決方法jQuery快取
- 在 awk 中怎麼使用迴圈
- Spring中如何解決迴圈依賴Spring
- require()迴圈引用問題UI
- 理解 JavaScript 中的迴圈JavaScript
- Node中的事件迴圈事件
- Go 1.22 中的 For 迴圈Go
- JavaScript中的while迴圈JavaScriptWhile
- Redis 中的事件迴圈Redis事件
- 在ArrayList的迴圈中刪除元素,會不會出現問題?
- SpringBoot 2.0中SpringWebContext 找不到無法使用的問題解決Spring BootWebContext
- Unity容器建構函式引數迴圈引用問題及解決Unity函式
- 使用c#強大的表示式樹實現物件的深克隆之解決迴圈引用的問題C#物件
- 遞迴解決全排列問題遞迴
- C#程式設計基礎第七課:C#中的基本迴圈語句:while迴圈、do-while迴圈、for迴圈、foreach迴圈的使用C#程式設計While
- 由於基本資料型別使用姿勢不對導致的線上"死迴圈"問題排查資料型別