PB游标使用问题
冥思-苦想 2019-06-29 12:41:42 目的:将一个数据库存的数据处理后更新到另一个数据库,游标内另外开启一个事务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; //关闭游标