Puede cambiar el procedimiento almacenado para aceptar una tabla parámetro valorado como entrada. Sin embargo, primero deberá crear un TIPO de tabla definida por el usuario que coincida con la estructura de C# DataTable:
CREATE TYPE dbo.PersonType AS TABLE
(
Name NVARCHAR(50), -- match the length of SomeTable.Column1
Age INT
);
Ajuste su SPROC:
CREATE PROCEDURE dbo.InsertPerson
@Person dbo.PersonType READONLY
AS
BEGIN
INSERT INTO SomeTable(Column1, Column2)
SELECT p.Name, p.Age
FROM @Person p;
END
En C#, cuando vincula la tabla de datos al parámetro PROC, debe especificar el parámetro como:
parameter.SqlDbType = SqlDbType.Structured;
parameter.TypeName = "dbo.PersonType";
Vea también el ejemplo aquí Passing a Table-Valued Parámetro a un procedimiento almacenado