oledb对多结果集的处理

1. 创建一个简单表及存储过程

create table sp_table

username varchar(
30 ),
age 
int
)


create procedure test_sp
@username varchar(
30 ),
@age 
int ,
@out 
int  output
as
insert into sp_table values(@username,@age);
select @out 
=  count(username) from sp_table

declare @a 
int
exec test_sp 
' oliver ' 21 ,@a output;
print @a

2. 创建一个CCommand<CDynamicParameterAccessor,CRowset,CMultipleResults> Rs; 其中第三个参数必须是CMultipleResults,默认为CNoMultipleResults3. 创建存储过程模版

CCommand < CDynamicParameterAccessor,CRowset,CMultipleResults >  Rs;

 

HRESULT hr  =  Rs.Create(dbconn -> m_session, " exec dbo.QueryStock ?,?,? " );
4. 设置参数
 hr  =  Rs.Prepare();
void *  pDummy;
hr 
=  Rs.BindParameters( & Rs.m_hParameterAccessor,Rs.m_spCommand, & pDummy);

char   * nParamValue1  =   " lei " ;
Rs.SetParam(nParamValue1);
int  nParamValue2  =   22 ;
Rs.SetParam((ULONG)
2 , & nParamValue2);

5. 调用存储过程

if (Rs.Open(NULL,NULL, 0 ) !=  S_OK)
{
           
return -1;
}

6. 过滤掉无用的返回结果,找到自己合适的结果集

 

LONG *  plRowsAffected  =  NULL;
while (Rs.GetNextResult(plRowsAffected)  ==  S_OK)
{
    
if(Rs.m_spRowset != NULL)
    
{
        Rs.Bind();
        
while (Rs.MoveNext() == S_OK)
        
{
                                           
//your code
        }

    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值