0

我正在尝试简化将信息存储在多个表中并将它们链接到中央表的复杂过程。使用每个表中生成的 IDENTITY 值进行链接以提供唯一链接。我知道我可以使用 SET NOCOUNT ON 和 SELECT @@identity 的组合来获取每个身份,但这仍然需要我为每个表调用单独的 SQLExecute()。我已经阅读了几十篇文章说 ADO 可以使用 ODBC 驱动程序处理多个记录集,所以问题是我如何在没有 ADO 的情况下做到这一点?

我已经封装了与 ADO 类似的所有标准 ODBC 内容。我基本上只需要知道哪些 ODBC API 调用将允许我重新创建 ADO 的 NextRecorset()。

我正在开发 MS SQL 7 和 MS SQL 2005 的组合,酌情使用 SQL Server ODBC 或 SQL Native Client 驱动程序。

最终目标:

SET NOCOUNT ON;
INSERT INTO TableA (data) VALUES ('a');
SELECT @@identity AS  NewID;
INSERT INTO TableB (data) VALUES ('b');
SELECT @@identity AS  NewID;
INSERT INTO TableC (data) VALUES ('c');
SELECT @@identity AS  NewID;
...
RS = DB.OpenRecordset()
RS.MoveFirst()
A_ID = RS.GetValue("id")
RS.NextRecordset()
RS.MoveFirst()
B_ID = RS.GetValue("id")
RS.NextRecordset()
RS.MoveFirst()
C_ID = RS.GetValue("id")
4

1 回答 1

0

SQLMoreResults()调用用作NextRecordSet()函数的模拟。

但是,如果您愿意让您的执行由以下组成,您可能不需要它INSERT ...; SELECT @@IDENTITY因为从该语句返回的唯一结果是身份,您不需要为SQLMoreResults().

于 2008-10-07T19:19:37.017 回答