【问题标题】:Oracle Stored Procedures with ADO NOT .net and VC++带有 ADO NOT .net 和 VC++ 的 Oracle 存储过程
【发布时间】:2013-04-19 20:32:21
【问题描述】:

我正在将 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 函数创建/使用/访问返回的游标?我看不到游标参数类型

我完全陷入困境,非常感谢一些帮助

谢谢

【问题讨论】:

    标签: oracle visual-c++ stored-procedures ado


    【解决方案1】:

    终于知道怎么做了,需要在连接字符串中指定特殊参数告诉它返回结果集:

    Provider=ORAOLEDB.ORACLE;User ID=xxx;Password=xxx;Data Source=tns_name;OLEDB.Net=True;PLSQLRSet=True;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-30
      • 2013-11-17
      • 2013-11-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多