我的資料庫是MS SQL 2005
我在程序中寫了LEFT(ISNULL(ERROR_MESSAGE(),''),250)來捕獲錯誤資訊。
可是我在前臺PB程式中無法取得該錯誤資訊。
現在的問題是,只要是在程儲程序有錯誤資訊后,在PB呼叫時就出現
cusor is not open 的錯誤資訊。
DECLARE Proc Procedure FOR
usp_instore_msg_state @sheet_id = 'INM09120001', @within_code = '01', @check_by = 'a',@result = :ls_errtext output;
EXECUTE Proc;
FETCH Proc Into :ls_errtext;
MessageBox(String(SQLCA.SQLCode),SQLCA.SQLErrText+';'+ls_errtext)
SQLCA.SQLErrText資訊息是:cusor is not open
ls_errtext的資訊為空
我無法取得資料庫返饋回來的錯誤資訊
請問這如何解決,如果在Oracle這樣來取得錯誤資訊是可以的,但不知在SQL中好像不行?
uj5u.com熱心網友回復:
呼叫程序怎么又用游標?FETCH Proc Into :ls_errtext;
這個錯誤
uj5u.com熱心網友回復:
LEFT(ISNULL(ERROR_MESSAGE(),''),250)的值可以作為回傳引數通過回傳值判斷
或者raise_error出來,在每一步都判斷sqlca.sqlerrtext
而不是到fetch才判斷
fetch只有執行成功才能有值吧?
uj5u.com熱心網友回復:
sun1976:不太明白你的意思,
我在程儲程序,有自定義的錯誤資訊或系統的錯誤的資訊,都是通過output引數輸出,我通過fetch into 來取得該錯誤的引數,這種方式,如果不在程儲程序中加上begin tran,則可以獲取。但是一但加上begin tran,就會出現 cusor is not open 錯誤
uj5u.com熱心網友回復:
那就去掉begin tran啊uj5u.com熱心網友回復:
是啊,后臺如果有raise_error,那么pb呼叫就會有問題uj5u.com熱心網友回復:
頂一下。uj5u.com熱心網友回復:
output = out ?轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/92179.html
標籤:腳本語言
上一篇:在PB中如何將"一二三四五"轉換為HTML Unicode︰一二三四五
