Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment insérer une table de données dans la table de base de données SQL Server ?

Créer un User-Defined TableType dans votre base de données :

CREATE TYPE [dbo].[MyTableType] AS TABLE(
    [Id] int NOT NULL,
    [Name] [nvarchar](128) NULL
)

et définissez un paramètre dans votre Stored Procedure :

CREATE PROCEDURE [dbo].[InsertTable]
    @myTableType MyTableType readonly
AS
BEGIN
    insert into [dbo].Records select * from @myTableType 
END

et envoyez votre DataTable directement sur le serveur 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);
}

Pour modifier les valeurs à l'intérieur de la procédure stockée, vous pouvez déclarer une variable locale avec le même type et y insérer une table d'entrée :

DECLARE @modifiableTableType MyTableType 
INSERT INTO @modifiableTableType SELECT * FROM @myTableType

Ensuite, vous pouvez modifier @modifiableTableType :

UPDATE @modifiableTableType SET [Name] = 'new value'