目的:將一個資料庫存的資料處理后更新到另一個資料庫,游標內另外開啟一個事務gtr_fox 這樣select 不到值,也無法插入資料;只使用一個事務也是一樣無法查詢和插入,commit更換幾個位置也沒用,請指點謝謝!!!!
Declare PC Cursor For //定義游標
Select ParentCategoryCode , CategoryCode , CategoryName,CreateDate From ProductCategory Where isNull(StatusFlags,'') = '1' Order BY CategoryFlags Using gtr_eon ;
Open PC; //打開游標
Do While gtr_eon.sqlcode = 0 //將游標內的資料逐條存入陣列
Fetch PC Into :ls_ParentCategoryCode ,:ls_CategoryCode,:ls_CategoryName,:ldt_GetDate ; //插入游標資料
IF ls_ParentCategoryCode = "ALL" Then
Insert Into Swgl_3..CPLB (UNI ,ParentKey ,LBCODE,LBNAME ,CreateDate )
VALUES( '_'+right(Cast(Newid() AS Char(36)),9) , :ls_ParentCategoryCode ,:ls_CategoryCode,:ls_CategoryName,:ldt_GetDate) ;
ELSE
String ls_PCUNI
Select parentkey into :ls_PCUNI From SWGL_3..CPLB Where LBCODE = :ls_ParentCategoryCode ;
Insert Into SWGL_3..CPLB (UNI ,ParentKey ,LBCODE,LBNAME ,CreateDate )
VALUES( '_'+right(Cast(Newid() AS Char(36)),9) , :ls_PCUNI ,:ls_CategoryCode,:ls_CategoryName,:ldt_GetDate) ;
End IF
// Fetch PC into :ls_ParentCategoryCode ,:ls_CategoryCode,:ls_CategoryName,:ldt_GetDate ;
Loop; //回圈
IF gtr_fox.sqlcode = 0 Then
Commit Using gtr_eon;
lb_1.additem(gnv_fun.of_Setmessagelogfile(gs_operator ,1, "同步資料" ,"新增類別" ,"類別保存成功"))
lb_1.setstate( lb_1.totalitems(),True)
lb_1.setstate( lb_1.totalitems(),False)
ELSE
rollback Using gtr_eon;
lb_1.additem(gnv_fun.of_Setmessagelogfile(gs_operator ,1, "同步資料" ,"新增類別" ,gtr_fox.sqlerrtext ))
lb_1.setstate( lb_1.totalitems(),True)
lb_1.setstate( lb_1.totalitems(),False)
End IF
Close PC; //關閉游標
uj5u.com熱心網友回復:
改用DataStore處理.uj5u.com熱心網友回復:
沒用過,能發個例子看看嗎
uj5u.com熱心網友回復:
PB powerbuilder中使用datastore替代游標https://blog.csdn.net/wosind/article/details/83785666
uj5u.com熱心網友回復:
一個資料庫存的資料處理后更新到另一個資料庫游標是在資料庫事務里
1個 事物物件 不能跨 資料庫使用
你需要放棄游標的方法
uj5u.com熱心網友回復:
Fetch PC Into :ls_ParentCategoryCode ,:ls_CategoryCode,:ls_CategoryName,這句是不是漏了 using gtr_eon;
uj5u.com熱心網友回復:
盡量不要用游標,用datastore或者封裝一個u_datastore 繼承自datastore,建一個方法
uj5u.com熱心網友回復:
盡量不要用游標,用datastore或者封裝一個u_datastore 繼承自datastore,建一個方法boolean of_retrieve(string as_sql)
回傳值為true 成功,false 失敗
uj5u.com熱心網友回復:
PB里面最好是少用游標,特別是游標嵌套,是有BUG的。。。uj5u.com熱心網友回復:
對,必須用datastore,不然你用pb干嗎uj5u.com熱心網友回復:
用datastore替代游標取資料,再回圈處理轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/8525.html
標籤:腳本語言
上一篇:做APP
下一篇:vscode中ts熱編譯報錯
