这个是mssql2000的过程,使用ado打开,但是得不到结果集!提示:“ADODB.Recordset 对象关闭时,操作不被允许。 “CREATE PROCEDURE sp_zj_getreport
(@in_station_id varchar(10),
@in_unit_no int,
@in_begintime datetime,
@in_endtime datetime)
ASbegin
--生成临时表
select ord =1,
report_name =' ',
item_name =' ',
danwei =' ',
value_max =10,
value_min =1,
value_avg =5,
value_95 =8
into #tmp
delete from #tmp
insert into #tmp values (0,'0',' ',' ',10,1,6,9)
------------------------------------------------------------
select * from #tmp
end
GO
(@in_station_id varchar(10),
@in_unit_no int,
@in_begintime datetime,
@in_endtime datetime)
ASbegin
--生成临时表
select ord =1,
report_name =' ',
item_name =' ',
danwei =' ',
value_max =10,
value_min =1,
value_avg =5,
value_95 =8
into #tmp
delete from #tmp
insert into #tmp values (0,'0',' ',' ',10,1,6,9)
------------------------------------------------------------
select * from #tmp
end
GO
解决方案 »
- 请教三维坐标变换
- 主框架中添加ToolBar,用来控制splitterview中添加的mapx控件,附件中有图(感兴趣的可以看一下)!
- 创建窗口失败
- XP 的 “最小化最大化时窗口动画显示”通过编程如何控制,注册表位置已经找到,但直接操作不马上生效,有谁知道?
- 弱弱的问一下,写病毒的时候(“熊猫烧香”),如何做到自己不会被感染?
- 如何得到对话框下的一个控件的RECT位置?
- 请教一个菜菜的问题,先谢了
- 有那位高手知道如何实现DLL与指定进程的动态挂接
- 静态库的奇怪问题
- 读取access数据在win7和xp下正常,但是在win10下不正常?
- VC++的发布问题
- 请问如何在VC下做一个包含简单数据的Dll以供Delphi调用?
select ord =1,
report_name =' ',
item_name =' ',
danwei =' ',
value_max =10,
value_min =1,
value_avg =5,
value_95 =8
into #tmp
delete from #tmp
insert into #tmp values (0,'0',' ',' ',10,1,6,9)
select * from #tmp------------------------------------------------------------SET NOCOUNT OFFgo
但是我在delphi或者bcb上测试都可以得到正确结果啊!
1,存储过程定义时,参数不要写括号
2,begin,end都是多余的代码
(这两点恰好符合自定义函数的特征,呵呵)
3,临时表用完后,最好再最后加上Drop table #tmp 以尽快释放资源,
虽然它连接断开后会自动释放.
如果临时表中数据量大,再drop前最好再来个:truncate table #tmp
我认为问题是这样的,在你的存储过程里面不止一条查询语句,因此它可能返回的不是一个单一的结果集,而是一个系列,在这个系列中只有最后一个结果集是打开的.你可以这样试试:
while(rs!=NULL)
{
if(rs->state!=adoStateClosed)
{
//做你要作的事
}
rs=rs->NextRecordset(NULL); //获得下一个结果集
}我就是通过这种办法解决的。
不过很奇怪的是,在vb里面可以直接得到结果集。
祝你好运。