Я пытаюсь упростить сложный процесс хранения информации в нескольких таблицах и их связывания с центральной таблицей. Связывание происходит с использованием значений IDENTITY, созданных в каждой таблице, чтобы обеспечить уникальное связывание. Я знаю, что могу использовать комбинацию SET NOCOUNT ON и SELECT @@ identity для получения каждого идентификатора, но это по-прежнему требует от меня вызова отдельного SQLExecute () для каждой таблицы. Я прочитал десятки статей, в которых говорится, что ADO может обрабатывать несколько наборов записей с помощью драйвера ODBC, поэтому вопрос в том, как мне это сделать без ADO?
Я уже инкапсулировал все стандартные элементы ODBC для поведения, аналогичного ADO. Мне просто нужно знать, какие вызовы API ODBC позволят мне воссоздать NextRecorset () ADO.
Я работаю над комбинацией MS SQL 7 и MS SQL 2005, используя либо SQL Server ODBC, либо драйверы собственного клиента SQL в зависимости от ситуации.
Конечная цель:
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().