之前做的SQL Server数据库需要迁移到oracle数据库上,发现差异之大真是坑爹啊。
我写了个数据库模块封装ado操作,调用oracle存储过程。
oracle存储过程定义如下
create or replace procedure sp_GetAllDataDefine
(p_recordset1 OUT SYS_REFCURSOR)
is
begin
OPEN p_recordset1 FOR
SELECT *
FROM PQDATADEFINE;
end sp_GetAllDataDefine;
用pl/sql测试执行是能够拿到数据的。但是用ado执行能成功,但是得到的结果集状态时adStateClosed。ado调用代码如下
char* strProcName="SP_GETALLDATADEFINE";
char sql[512];
sprintf_s(sql, 500, "{CALL %s(?)}", strProcName);
_CommandPtr pCmd = (_Command *)pParameters->GetCommand();
pRs.CreateInstance (__uuidof (Recordset));
pCmd->ActiveConnection = m_pConnection;
pCmd->CommandText = sql;
int lt = pRs->LockType;
int ct = pRs->CursorType;
pRs = pCmd->Execute(NULL, NULL,
adCmdStoredProc | adCmdUnspecified);
求高人指点,项目很急啊