c++代码如下:
_RecordsetPtr  m_recordset;
m_recordset.CreateInstance(__uuidof(Recordset));
sqlstm="{call tty.my_pkg.my_proc()}";
//存储过程有两个游标输出参数:procedure my_proc(cu1 out my_cursor,cu2 out my_cursor) 
hr = m_recordset->Open(sqlstm,m_conn,adOpenForwardOnly,adLockReadOnly,adCmdText);
while (!(m_recordset == NULL))
{
for (int j=0; j<colnum; j++)
{
//输出m_recordset->Fields->GetItem((long)j)->Name;
}
while (!m_recordset->EndOfFile)
{
for (int i=0; i<colnum; i++)
{
//输出m_recordset->GetFields()->GetItem((long)i)->Value;
}
m_recordset->MoveNext();
}
long lngRec = 0;
m_recordset = m_recordset->NextRecordset((VARIANT *)lngRec);
}
结果:读出第一个游标的内容后就报错:当前提供程序不支持从单一执行返回多个记录集
但是同样的代码调用sql server 的返回多个结果集的存储过程却都可以读到。
请高手帮忙!!

解决方案 »

  1.   

    你连存储过程的Script都没有,怎么棒你看SQL server和Oracle在存储过程返回数据集上
    差别蛮大
      

  2.   

    sql server存储过程为:
    create procedure my_proc
    as
    select * from info_tab
    select * from log_tab
    goOracle存储过程为:
    procedure my_proc(cu1 out my_cursor, cu2 out my_cursor)
    begin
    open cu1 for select * from info_tab;
    open cu2 for select * from log_tab;
    end;
      

  3.   

    sqlstm变量里的SQL语句打印出来传上来!
    我估计是这样的!
    SELECT
    a,
    (select b from testtable where 条件1=1 and 条件2=2)B
    FROM 
    table(select b from testtable where 条件1=1 and 条件2=2)B 应该是这种SQL语句返回的结果不是一个!