我用query调用存储过程,代码如下:
with dmdatabase.qry_average do
begin
close;
sql.clear;
sql.Add('exec str_writeaverage :classno' + ',' + ':term');
parambyname('classno').AsString := edtclassid.Text;
parambyname('term').AsString := edtterm.Text;
prepare;
open;
end;
执行时报错:error create cursor handle
我换成存储过程也报同样的错误,
请问为什么?
with dmdatabase.qry_average do
begin
close;
sql.clear;
sql.Add('exec str_writeaverage :classno' + ',' + ':term');
parambyname('classno').AsString := edtclassid.Text;
parambyname('term').AsString := edtterm.Text;
prepare;
open;
end;
执行时报错:error create cursor handle
我换成存储过程也报同样的错误,
请问为什么?
--定义变量
--declare @classno char(8)set @classno = '20000573'set @term = '20022'declare @term char(5)
declare @studentno char(10)
declare @average float
declare @tsum float--取@tsum值
select @tsum = tsum from view_sum
where classno = @classno and term = @term
--定义游标,取出平均分
declare cur_average cursor for
select sum(Single)/@Tsum,StudentNo
from Achievement
where ClassNo=@Classno and term=@Term
group by StudentNo
---打开游标
begin tran
open cur_average
fetch next from cur_average into @average,@studentno
while @@fetch_status = 0
begin
update Achievement
set Average=@Average
where StudentNo=@Studentno and ClassNo=@Classno and term=@Term
fetch next from cur_average into @average,@studentno
end
---关闭游标
close cur_average
deallocate cur_average
if @@error <> 0
rollback tran
commit tran
GO
select sum(Single)/@Tsum,StudentNo
from Achievement
这段换成declare cur_average cursor for
select sum(Single)/@Tsum as Pjf,StudentNo
from Achievement 试试