Crie um
User-Defined TableType
em seu banco de dados:CREATE TYPE [dbo].[MyTableType] AS TABLE(
[Id] int NOT NULL,
[Name] [nvarchar](128) NULL
)
e defina um parâmetro em seu
Stored Procedure
:CREATE PROCEDURE [dbo].[InsertTable]
@myTableType MyTableType readonly
AS
BEGIN
insert into [dbo].Records select * from @myTableType
END
e envie sua
DataTable
diretamente para o servidor sql:using (var command = new SqlCommand("InsertTable") {CommandType = CommandType.StoredProcedure})
{
var dt = new DataTable(); //create your own data table
command.Parameters.Add(new SqlParameter("@myTableType", dt));
SqlHelper.Exec(command);
}
Para editar os valores dentro do procedimento armazenado, você pode declarar uma variável local com o mesmo tipo e inserir a tabela de entrada nela:
DECLARE @modifiableTableType MyTableType
INSERT INTO @modifiableTableType SELECT * FROM @myTableType
Em seguida, você pode editar
@modifiableTableType
:UPDATE @modifiableTableType SET [Name] = 'new value'