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

我已经将所有标准ODBC内容封装成ADO的类似行为。我基本上只需要知道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")
有帮助吗?

解决方案

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

但是如果你愿意让你的执行包含 INSERT ......,你可能不需要它; SELECT @@ IDENTITY 由于此语句返回的唯一结果是标识,因此您无需为 SQLMoreResults()而烦恼。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top