How to commit inserts in a single statement
Posted: Mon 14 May 2012 21:43
In SDAC, it appears that multiple inserts are sent as multiple statements, with each statement in its own round trip to the server, with its own GO. In ADO, batches are combined into a single statement. Is it possible to make SDAC do this as well?
Here are examples of inserts on the same table, one using TMSQuery, and one using TADODataset.
------------------------Using SDAC------------------------------
EXEC sp_executesql N'INSERT INTO ValCodes
(VCCode, VCDesc)
VALUES
(@P1, @P2)', N'@P1 varchar(2),@P2 varchar(1)', 'G1', 'g'
go
EXEC sp_executesql N'INSERT INTO ValCodes
(VCCode, VCDesc)
VALUES
(@P1, @P2)', N'@P1 varchar(2),@P2 varchar(2)', 'G2', 'gg'
go
EXEC sp_executesql N'INSERT INTO ValCodes
(VCCode, VCDesc)
VALUES
(@P1, @P2)', N'@P1 varchar(2),@P2 varchar(3)', 'G3', 'ggg'
go
EXEC sp_executesql N'INSERT INTO ValCodes
(VCCode, VCDesc)
VALUES
(@P1, @P2)', N'@P1 varchar(2),@P2 varchar(4)', 'G4', 'gggg'
go
------------------------Using ADO-------------------------------
EXEC sp_executesql N'INSERT INTO "clntBurch".."ValCodes" ("VCCode","VCDesc") VALUES (@P1,@P2);
INSERT INTO "clntBurch".."ValCodes" ("VCCode","VCDesc") VALUES (@P3,@P4);
INSERT INTO "clntBurch".."ValCodes" ("VCCode","VCDesc") VALUES (@P5,@P6);
INSERT INTO "clntBurch".."ValCodes" ("VCCode","VCDesc") VALUES (@P7,@P8)',
N'@P1 varchar(2),@P2 varchar(1),@P3 varchar(2),@P4 varchar(2),@P5 varchar(2),@P6 varchar(3),@P7 varchar(2),@P8 varchar(4)',
'H1', 'h', 'H2', 'hh', 'H3', 'hhh', 'H4', 'hhhh'
Here are examples of inserts on the same table, one using TMSQuery, and one using TADODataset.
------------------------Using SDAC------------------------------
EXEC sp_executesql N'INSERT INTO ValCodes
(VCCode, VCDesc)
VALUES
(@P1, @P2)', N'@P1 varchar(2),@P2 varchar(1)', 'G1', 'g'
go
EXEC sp_executesql N'INSERT INTO ValCodes
(VCCode, VCDesc)
VALUES
(@P1, @P2)', N'@P1 varchar(2),@P2 varchar(2)', 'G2', 'gg'
go
EXEC sp_executesql N'INSERT INTO ValCodes
(VCCode, VCDesc)
VALUES
(@P1, @P2)', N'@P1 varchar(2),@P2 varchar(3)', 'G3', 'ggg'
go
EXEC sp_executesql N'INSERT INTO ValCodes
(VCCode, VCDesc)
VALUES
(@P1, @P2)', N'@P1 varchar(2),@P2 varchar(4)', 'G4', 'gggg'
go
------------------------Using ADO-------------------------------
EXEC sp_executesql N'INSERT INTO "clntBurch".."ValCodes" ("VCCode","VCDesc") VALUES (@P1,@P2);
INSERT INTO "clntBurch".."ValCodes" ("VCCode","VCDesc") VALUES (@P3,@P4);
INSERT INTO "clntBurch".."ValCodes" ("VCCode","VCDesc") VALUES (@P5,@P6);
INSERT INTO "clntBurch".."ValCodes" ("VCCode","VCDesc") VALUES (@P7,@P8)',
N'@P1 varchar(2),@P2 varchar(1),@P3 varchar(2),@P4 varchar(2),@P5 varchar(2),@P6 varchar(3),@P7 varchar(2),@P8 varchar(4)',
'H1', 'h', 'H2', 'hh', 'H3', 'hhh', 'H4', 'hhhh'