C ++使用存储过程返回结果

时间:2017-07-24 16:18:07

标签: c++ stored-procedures

在过去几年中,我一直在维护一个使用某种形式的非ADO数据库连接的大型C ++应用程序(v100),但效果很好。

在此期间,从数据库中获取结果集非常简单。我使用数据库对象实例化返回类,然后打开查询。

CUpdates cUpdates(GetDatabase());
CString strQuery = "SELECT * FROM Updates";
cUpdates.Open(-1, strQuery);

就是这么简单,cUpdates充满了记录。

现在,我们想要执行存储过程,并从中返回结果。但无论我尝试什么,即使将'EXEC'改为'CALL',呼叫也会失败。是否有类似的简单方法来执行存储过程并返回结果,而不必完全重写应用程序处理数据库连接和返回数据的方式?

        strQuery.Format("EXEC dbo.[GetUpdates_ComputerName] '%s', %d, %d", GetWorkstationName(), m_bRetainUpdates, m_bScheduleUpdate);
        cUpdates.Open(-1, strQuery);  //FAILS ON EXEC

(我已在SSMS中测试过EXEC语句,并且工作正常)

我们还使用另一个sql命令来严格执行语句,但我看不到用它返回数据的方法。也许有一个我不知道的类似命令?

GetDatabase()->ExecuteSQL(strQuery);

注意:为了记录,我是C#开发人员(从1.0 beta开始)。我在c ++方面的唯一经验是在过去两年中一直在学习,偶尔会维护一些庞大的系统。

1 个答案:

答案 0 :(得分:0)

CRecordset似乎无法处理其中的EXEC语句。所以我们将新的存储过程转换为表格函数,所以我可以使用SELECT代替......它可以正常工作。 (虽然我宁愿使用存储过程)