我正在尝试简化在多个表中存储信息的复杂过程,并将它们链接到中央表。使用每个表中生成的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")
答案 0 :(得分:0)
使用SQLMoreResults()
调用作为NextRecordSet()
函数的模拟。
但是如果你愿意让你的执行由INSERT ...; SELECT @@IDENTITY
组成,你可能不需要它。因为从这个语句返回的唯一结果是身份,所以你不必费心{{1 }}