我正在将VC++/SQL服务器应用程序迁移到使用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;
代码类似于:
_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);
(实际上,它使用的是来自http://www.codeproject.com/Articles/1075/A-set-of-ADO-classes-version-2-20#TheSample02的ADO类)
返回的pRecordset处于关闭状态,您无法对其执行任何操作。我想我应该为游标传递一些参数,但是如何使用这些ADO函数创建/使用/访问返回的游标呢?我看不到任何游标参数类型
我完全被困住了,非常感谢你的帮助。
谢谢
发布于 2013-04-19 12:32:22
最后知道怎么做了,需要在连接字符串中指定特殊的参数,告诉它返回结果集:
Provider=ORAOLEDB.ORACLE;User ID=xxx;Password=xxx;Data Source=tns_name;OLEDB.Net=True;PLSQLRSet=True;
https://stackoverflow.com/questions/16087813
复制