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

C++ use Stored Procedure to return results

本文关键字:返回 结果 存储过程 C++      更新时间:2023-10-16

在过去的几年里,我一直在维护一个利用某种形式的非 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 测试版开始(。 在过去的 2 年里,我在 c++ 方面的唯一经验是动态学习,偶尔维护一些大型系统。

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