Oracle 使用ADO而不是.net和VC++;
我正在将VC++/SQL server应用程序迁移到使用Oracle。数据库访问是使用ADO类实现的,我找不到一种方法来遍历Oracle返回的游标 存储过程类似于:Oracle 使用ADO而不是.net和VC++;,oracle,visual-c++,stored-procedures,ado,Oracle,Visual C++,Stored Procedures,Ado,我正在将VC++/SQL server应用程序迁移到使用Oracle。数据库访问是使用ADO类实现的,我找不到一种方法来遍历Oracle返回的游标 存储过程类似于: create or replace PROCEDURE GetSettings ( cv_1 OUT SYS_REFCURSOR ) AS BEGIN OPEN cv_1 FOR SELECT KEY , VALUE FROM Settings; END;
create or replace PROCEDURE GetSettings
(
cv_1 OUT SYS_REFCURSOR
)
AS
BEGIN
OPEN cv_1 FOR
SELECT KEY ,
VALUE
FROM Settings;
END;
_CommandPtr pCommand;
_ParameterPtr pParam1;
HRESULT hr = pCommand.CreateInstance (__uuidof (Command));
if (FAILED (hr))
return;
pCommand->ActiveConnection = m_pConn;
pCommand->CommandText = "GetSettings";
pCommand->CommandType = adCmdStoredProc;
_RecordsetPtr pRecordset;
hr = pRecordset.CreateInstance (__uuidof (Recordset));
if (FAILED (hr))
return;
pRecordset = pCommand->Execute(NULL,NULL,adCmdStoredProc);
代码类似于:
create or replace PROCEDURE GetSettings
(
cv_1 OUT SYS_REFCURSOR
)
AS
BEGIN
OPEN cv_1 FOR
SELECT KEY ,
VALUE
FROM Settings;
END;
_CommandPtr pCommand;
_ParameterPtr pParam1;
HRESULT hr = pCommand.CreateInstance (__uuidof (Command));
if (FAILED (hr))
return;
pCommand->ActiveConnection = m_pConn;
pCommand->CommandText = "GetSettings";
pCommand->CommandType = adCmdStoredProc;
_RecordsetPtr pRecordset;
hr = pRecordset.CreateInstance (__uuidof (Recordset));
if (FAILED (hr))
return;
pRecordset = pCommand->Execute(NULL,NULL,adCmdStoredProc);
(实际上,它使用的是来自的ADO类)
返回的预编码集处于关闭状态,您无法对其执行任何操作。我想我应该为游标传递一些参数,但是如何使用这些ADO函数创建/使用/访问返回的游标呢?我看不到游标参数类型
我完全陷入困境,非常感谢您的帮助
感谢终于找到了方法,您需要在连接字符串中指定特殊参数,告诉它返回结果集: Provider=ORAOLEDB.ORACLE;用户ID=xxx;密码=xxx;数据源=tns_名称;OLEDB.Net=True;PLSQLRSet=True