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; //关闭游标
...全文
811 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
PB菜鸟 2020-02-03
  • 打赏
  • 举报
回复
用datastore替代游标取数据,再循环处理
洛阳大湖 2019-12-19
  • 打赏
  • 举报
回复
对,必须用datastore,不然你用pb干吗
sisssoft 2019-10-16
  • 打赏
  • 举报
回复
PB里面最好是少用游标,特别是游标嵌套,是有BUG的。。。
DYFDWX 2019-08-14
  • 打赏
  • 举报
回复
尽量不要用游标,用datastore 或者封装一个u_datastore 继承自datastore,建一个方法boolean of_retrieve(string as_sql) 返回值为true 成功,false 失败
DYFDWX 2019-08-14
  • 打赏
  • 举报
回复
尽量不要用游标,用datastore 或者封装一个u_datastore 继承自datastore,建一个方法
whb00120012 2019-08-13
  • 打赏
  • 举报
回复
Fetch PC Into :ls_ParentCategoryCode ,:ls_CategoryCode,:ls_CategoryName,
这句是不是漏了 using gtr_eon;
dyf0130 2019-07-12
  • 打赏
  • 举报
回复
一个数据库存的数据处理后更新到另一个数据库 游标是在数据库事务里 1个 事物对象 不能跨 数据库使用 你需要放弃游标的方法
WellSoft 2019-06-29
  • 打赏
  • 举报
回复
改用DataStore处理.
aolixiaox 2019-06-29
  • 打赏
  • 举报
回复
PB powerbuilder中使用datastore替代游标 https://blog.csdn.net/wosind/article/details/83785666
冥思-苦想 2019-06-29
  • 打赏
  • 举报
回复
引用 1 楼 WellSoft的回复:
改用DataStore处理.
没用过,能发个例子看看吗

740

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 脚本语言
社区管理员
  • 脚本语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧