【发布时间】:2016-11-21 15:02:58
【问题描述】:
我遇到了一个大问题并试图找到解决方法。我在 PB12.5 中有一个适用于 sql 和 oracle dbs 的应用程序..(有很多数据)
我在某个点使用 CURSOR,但应用程序仅在 sql 中崩溃。在 PB 中使用调试我发现由于巨大的事务大小,sql 连接返回 -1。但我想逐行获取我的数据.. 是否有任何解决方法来获取分页等数据?我的意思是让我们先获取前 1000 行,然后再获取其他 1000 行,依此类推.. 我希望你理解我想要实现的目标(打破获取过程,尽可能减少事务大小),这是我的代码
DECLARE trans_Curs CURSOR FOR
SELECT associate_trans.trans_code
FROM associate_trans
WHERE associate_trans.usage_code = :ggs_vars.usage ORDER BY associate_trans.trans_code ;
OPEN trans_Curs;
FETCH trans_Curs INTO :ll_transId;
DO WHILE sqlca.sqlcode = 0
ll_index += 1
hpb_1.Position = ll_index
if not guo_associates.of_asstrans_updatemaster( ll_transId, ls_error) then
ROLLBACK;
CLOSE trans_Curs;
SetPointer(Arrow!)
MessageBox("Update Process", "Problem with the update process on~r~n" + sqlca.sqlerrtext)
cb_2.Enabled = TRUE
return
end if
FETCH trans_Curs INTO :ll_transId;
LOOP
CLOSE trans_Curs;
【问题讨论】:
-
您可以使用两个值,开始和结束条件为查询添加限制(例如,开始条件将是当前时间戳 - 它相关,否则任何其他相关条件;结束条件将是行数。在第一个结果之后,获取时间戳(或选择的值)作为起始条件,并重新发出相同行数的选择。等等......
-
感谢 FDavidov 的帖子,你能给我一个关于我发布的示例的例子吗?
-
评论太长了,我会在几分钟后把它作为答案。
-
Unrleated,但是:“sql and oracle dbs”没有意义。 Oracle 是一个“SQL 数据库”,因为它使用 SQL。每个关系数据库都是一个“SQL 数据库”
-
对此很抱歉,但我认为开发人员马上就能理解其中的区别,好吧,我的错,,它既有 MS Sql 也有 oracle dbs
标签: sql cursor powerbuilder