| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1303 人关注过本帖
标题:为什么游标会这样,还是PB的原因
只看楼主 加入收藏
zjk_xzh
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-4-10
收藏
 问题点数:0 回复次数:5 
为什么游标会这样,还是PB的原因

我自己做了个销售图书的软件,用的数据库为sql server2000 sp3a,里面用到了一个游标,
DECLARE cp_cur CURSOR FOR
SELECT book_sale.book_shuliang, book_sale.book_isbn FROM book_sale WHERE book_sale.sale_lsh = :ls_book_lsh;
open cp_cur;
fetch cp_cur into:ld_book_shuliang,:ls_book_isbn;
do while sqlca.sqlcode = 0
SELECT book_ck.book_shuliang INTO :ld_shuliang FROM book_ck WHERE book_ck.book_isbn = :ls_book_isbn ;
ld_zong = ld_shuliang - ld_book_shuliang
UPDATE book_ck SET book_shuliang = :ld_zong WHERE book_ck.book_isbn = :ls_book_isbn ;
fetch cp_cur into :ld_book_shuliang,:ls_book_isbn;
loop
close cp_cur;
现在出现了问题,为什么第一次循环时ld_shuliang老为零,而下面的不论循环多少次就可以准确的检索出数来,在DEBUG下测试时,第一次循环ls_book_isbn也有值,相应的数据库中也有对应值,另外在sybase anywhere 下不出这种错误。请大家看一下。

搜索更多相关主题的帖子: 游标 
2006-04-10 20:01
ヤ順祺冄繎ヤ
Rank: 8Rank: 8
等 级:贵宾
威 望:42
帖 子:3032
专家分:0
注 册:2005-11-9
收藏
得分:0 
游標沒問題,
你試著輸出ld_shuliang的值看一下!
2006-04-11 10:01
zjk_xzh
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-4-10
收藏
得分:0 
谢谢版主的指教,但是输出也不行啊,加了一条messagebox('',string(ld_shuliang))还是显示为零,另外在sybase上没问题,循环到第二次以后也没有问题,我用的是PB10,是不是它的问题啊。
2006-04-11 10:32
ヤ順祺冄繎ヤ
Rank: 8Rank: 8
等 级:贵宾
威 望:42
帖 子:3032
专家分:0
注 册:2005-11-9
收藏
得分:0 
應該不會是PB軟件的問題吧!
我也沒遇到過這種情況,我不知道!
你在每個SQL語句之後判斷一下該SQL語句是否執行成功!
2006-04-11 10:51
zjk_xzh
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-4-10
收藏
得分:0 
对了,不是pb的问题,是sql的问题,提示sqlstate = s1000
[Microsoft][ODBC SQL Server Driver]连接占线导致另一个hstmt.请问怎么解决啊.很急的。
2006-04-11 20:12
zjk_xzh
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-4-10
收藏
得分:0 
我把游标改成这样子了,这回变成i=1时提交成功,当i>1时,ls_isbn,也能检索出来,select 时错误提示为空,也就是sqlca.sqlcaerrtext为空,真奇怪啊
for i = 1 to dw_1.rowcount( )
ls_isbn = dw_1.getitemstring( i,'book_isbn')
ld_xssl = dw_1.getitemnumber( i,'book_shuliang')
DECLARE book_cur CURSOR FOR
SELECT book_ck.book_shuliang FROM book_ck WHERE book_ck.book_isbn = :ls_isbn;
if sqlca.sqlcode = 0 then
messagebox('','成功')
else
messagebox('',SQLCA.SQLErrText)
return
end if
open book_cur;
fetch book_cur into :ld_kcsl;
ld_zong = ld_kcsl - ld_xssl
UPDATE book_ck SET book_shuliang = :ld_zong WHERE book_ck.book_isbn = :ls_isbn ;
fetch book_cur into :ld_kcsl;
end for
close book_cur;
2006-04-11 20:54
快速回复:为什么游标会这样,还是PB的原因
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022626 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved