• I have been using an XML string to achieve the same results. Not sure that it is faster, but it is quite flexible as:

    EXEC sp_xml_preparedocument @idoc OUTPUT, @XMLParameters

    insert into #T

    select *

    FROM OPENXML (@idoc, '/OrderGroup/Item', 1)

    WITH #T

    EXEC sp_xml_removedocument @idoc

    In this example #T is a large table with over 20 columns. @XMLParameters is varchar(max) to pass as many rows as necessary at once, which is and added bonus, because there is still no Table as parameter. (I am using varchar instead of XML because XML is more strict and we do not need this here.)

    Comments on this approach are welcome.

    Jerome