關於數據庫光標的一些問題,向各位大蝦請教
小弟有如下存儲過程,在PB開發環境下運行可以得到正確結果,但一到運行環境中就沒有結果了,也不報任何錯誤信息,請大蝦們指教:
這個存儲過程的目的是通過光標的從數據表中取出指寫個數的記錄,即分頁取數方式!
起先我將結果Fetch出來,做成數據窗口,開發環境可以,運行環境取不出記錄.
然後我將記錄Fetch到一個臨時表中,從臨時表中輸出記錄,也是開發環境可以,運行環境取不出記錄.
再然後我建立一個正式表,將記錄Fetch到正式表中,在PB中執行此存儲過程,結果也不能返回結果.
後來我又試過用動態SQL語句執行此存儲過程,仍然不行.
我實在是沒有辦法了,不知道到底是什麽原因
create PROCEDURE p_iqc_check_mova
@vendno char(10) ,
@pno char(24),
@pageNo int = 1,
@row_in_page int = 20
as
Declare @first int
begin
delete from iqc_check_tmp
select @first =(@pageNo-1)*@row_in_page
if(@first < 0) select @first = 0
declare check_record cursor for
select seq_no,in_date,qty,check_mode,iqcno,iqc_result,other,remark1,remark2,ent_by,ent_date
from dbo.iqc_check
where vendno=@vendno and
pno=@pno
order by in_date Desc,seq_no Desc
open check_record
set cursor rows 1 for check_record
Declare @seq_no int,@in_date datetime,@qty float,@check_mode char(1),
@iqcno char(10),@iqc_result char(40),@other char(20),
@remark1 char(80),@remark2 char(80),@ent_by char(10),@ent_date datetime
declare @i int
declare @j int
select @i = 0
SELECT @j = 1
while(@@sqlstatus = 0)
begin
if(@first = @i)
begin
while (@j <= @row_in_page )
begin
FETCH check_record
INTO @seq_no,
@in_date,
@qty,
@check_mode,
@iqcno,
@iqc_result,
@other,
@remark1,
@remark2,
@ent_by,
@ent_date
IF (@@sqlstatus <>0 )
break
INSERT INTO iqc_check_tmp
values( @seq_no,
@in_date,
@qty,
@check_mode,
@iqcno,
@iqc_result,
@other,
@remark1,
@remark2,
@ent_by,
@ent_date)
SELECT @j=@j+1
END
break
END
FETCH check_record
INTO @seq_no,
@in_date,
@qty,
@check_mode,
@iqcno,
@iqc_result,
@other,
@remark1,
@remark2,
@ent_by,
@ent_date
select @i = @i + 1
end
close check_record
deallocate cursor check_record
end
;
這個存儲過程的目的是通過光標的從數據表中取出指寫個數的記錄,即分頁取數方式!
起先我將結果Fetch出來,做成數據窗口,開發環境可以,運行環境取不出記錄.
然後我將記錄Fetch到一個臨時表中,從臨時表中輸出記錄,也是開發環境可以,運行環境取不出記錄.
再然後我建立一個正式表,將記錄Fetch到正式表中,在PB中執行此存儲過程,結果也不能返回結果.
後來我又試過用動態SQL語句執行此存儲過程,仍然不行.
我實在是沒有辦法了,不知道到底是什麽原因
create PROCEDURE p_iqc_check_mova
@vendno char(10) ,
@pno char(24),
@pageNo int = 1,
@row_in_page int = 20
as
Declare @first int
begin
delete from iqc_check_tmp
select @first =(@pageNo-1)*@row_in_page
if(@first < 0) select @first = 0
declare check_record cursor for
select seq_no,in_date,qty,check_mode,iqcno,iqc_result,other,remark1,remark2,ent_by,ent_date
from dbo.iqc_check
where vendno=@vendno and
pno=@pno
order by in_date Desc,seq_no Desc
open check_record
set cursor rows 1 for check_record
Declare @seq_no int,@in_date datetime,@qty float,@check_mode char(1),
@iqcno char(10),@iqc_result char(40),@other char(20),
@remark1 char(80),@remark2 char(80),@ent_by char(10),@ent_date datetime
declare @i int
declare @j int
select @i = 0
SELECT @j = 1
while(@@sqlstatus = 0)
begin
if(@first = @i)
begin
while (@j <= @row_in_page )
begin
FETCH check_record
INTO @seq_no,
@in_date,
@qty,
@check_mode,
@iqcno,
@iqc_result,
@other,
@remark1,
@remark2,
@ent_by,
@ent_date
IF (@@sqlstatus <>0 )
break
INSERT INTO iqc_check_tmp
values( @seq_no,
@in_date,
@qty,
@check_mode,
@iqcno,
@iqc_result,
@other,
@remark1,
@remark2,
@ent_by,
@ent_date)
SELECT @j=@j+1
END
break
END
FETCH check_record
INTO @seq_no,
@in_date,
@qty,
@check_mode,
@iqcno,
@iqc_result,
@other,
@remark1,
@remark2,
@ent_by,
@ent_date
select @i = @i + 1
end
close check_record
deallocate cursor check_record
end
;
...全文
相关推荐
光标变粗问题怎么解决
标题中的“光标变粗问题怎么解决”是一个常见的计算机使用问题,主要涉及到操作系统中的光标设置。光标是用户在屏幕上的操作指示器,它的大小和形状直接影响到用户的视觉体验和操作效率。
解决PyCharm中光标变粗的问题
这个问题虽然不影响程序的运行,但对于长时间编程的开发者来说,可能会对视觉体验和工作效率产生一定的影响。本文将详细讲解如何解决PyCharm中光标变粗的问题。首先,我们需要了解光标变粗的原因。
鼠标光标由简单的箭头改变成你喜爱的图案
**版权问题**:使用他人设计的光标时,应注意版权问题。确保你使用的图案是授权的,或者来自公共领域,以避免侵犯他人的知识产权。7.
Keil C51中光标问题的处理方法
这样,你就成功解决了Keil C51中光标定位不准确的问题,提高了编程效率。
解决ios手机中input输入框光标过长的问题
"解决ios手机中input输入框光标过长的问题"在移动端页面开发中,input输入框的光标大小问题是一个常见的问题,特别是在iOS手机中,光标大小与安卓手机不一致的问题。


数据库相关
