老话重提:ADO调用存储过程
事情是这样的,我用的数据库为SQL SERVER2000 , 在后台编写有sp_getinfo 存储过程,带有参数 @address varchar(16);存储过程最后调用的语句是
select id , lfrom , infor from #temp
也就是说存储过程会在最后返回n条数据,其中n不确定。
我的做法:
_ConnectionPtr lp_connect;
_RecordsetPtr lp_record;
lp_connect 和lp_record的创建都没有任何问题,且lp_connect也已经open.
然后我调用try
{
lp_record->Open(_variant_t("EXECUTE sp_getinfo @address = '202.2.245.193'"), _variant_t((IDispatch *) lp_connect ,true),
adOpenDynamic,adLockOptimistic,adCmdText);
}
catch(_com_error &e)
{
lp_connect->Close();
::CoUninitialize();
AfxMessageBox(e.ErrorMessage());
AfxMessageBox(e.Description());
return;
}
这里没有问题提示,但是在接下来的操作中有错误出现,我所做的操作是
lp_record->MoveNext(),我知道我这样做存在有问题,但是,那么该怎么做呢,当然我可以把存储过程生成的东西写入一个表中,然后再从表中读取,但那样就失去存储过程的意义了。另外我接触ADO没有多长时间,希望各位前行者不吝赐教!
谢谢!
问题点数:0、回复次数:3Top
1 楼ganry()回复于 2004-08-02 11:47:52 得分 0
另外command的方法我也试过了,但就是不行,出的错误是一样的,在lp_record->MoveNext()的时候就会发出同样的错误提示!大概是告诉我没有错误处理!Top
2 楼ganry()回复于 2004-08-02 11:49:54 得分 0
也看过有一位这么写lp_record->Open(_variant_t("begin sp_getinfo('202.2.245.193');end;"), _variant_t((IDispatch *) lp_connect ,true),
adOpenDynamic,adLockOptimistic,adCmdText);
但这样执行时立马报错,说sp_getinfo附近有错误!
遗憾啊!Top
3 楼ganry()回复于 2004-08-02 16:38:30 得分 0
对 lp_record 做任何操作时都提示"对象关闭时,操作不被允许。"错误号:ox800A0E78.
这是什么问题?Top




