Frage

Ich versuche, einen komplexen Prozess des Speichers von Informationen in mehreren Tabellen zu optimieren und sie mit einer zentralen Tabelle zu verknüpfen. Die Verknüpfung erfolgt unter Verwendung von Identitätswerten, die in jeder Tabelle erzeugt werden, um die eindeutige Verknüpfung bereitzustellen. Ich weiß, dass ich eine Kombination aus Set Nocount auf und aus auswählen kann @@ Identity, um jede Identität zu erhalten, aber das erfordert immer noch, dass ich für jede Tabelle einen separaten SQLEXecute () aufrufen kann. Ich habe Dutzende von Artikeln gelesen, in denen ADO mithilfe eines ODBC -Treibers mehrere Datensätze verarbeiten kann. Die Frage ist also, wie ich es ohne ADO mache.

Ich habe bereits alle Standard -ODBC -Dinge für ein ähnliches Verhalten wie ADO verkapuliert. Im Grunde muss ich nur wissen, welche ODBC -API -Anrufe es mir ermöglichen, ADOs NexTrecorset () neu zu erstellen.

Ich arbeite an einer Kombination von MS SQL 7 und MS SQL 2005, wobei entweder die SQL Server ODBC oder die SQL Native Client -Treiber verwendet werden.

Endziel:

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")
War es hilfreich?

Lösung

Verwenden Sie das SQLMoreResults() Rufen Sie als Analog zum Analog an NextRecordSet() Funktion.

Sie brauchen das jedoch wahrscheinlich nicht, wenn Sie bereit sind, Ihre Executes bestehen zu lassen INSERT ...; SELECT @@IDENTITY Da das einzige Ergebnis aus dieser Aussage die Identität ist, müssen Sie sich nicht mit dem beschäftigen SQLMoreResults().

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top