0

複数のテーブルに情報を格納し、それらを中央のテーブルにリンクする複雑なプロセスを合理化しようとしています。リンクは、一意のリンクを提供するために各テーブルで生成された IDENTITY 値を使用して行われます。SET NOCOUNT ON と SELECT @@identity の組み合わせを使用して各 ID を取得できることはわかっていますが、それでもテーブルごとに個別の SQLExecute() を呼び出す必要があります。ADO は ODBC ドライバーを使用して複数のレコードセットを処理できるという記事を何十回も読みました。

ADO と同様の動作をするために、標準の ODBC のすべてを既にカプセル化しています。基本的に、ADO の NextRecorset() を再作成できる ODBC API 呼び出しを知る必要があります。

私は、必要に応じて SQL Server ODBC または SQL Native Client Drivers を使用して、MS SQL 7 と MS SQL 2005 の組み合わせに取り組んでいます。

最終目標:

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このステートメントから返される唯一の結果は ID であるため、SQLMoreResults().

于 2008-10-07T19:19:37.017 に答える