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

Passer DataTable à une procédure stockée en tant qu'argument

Vous pouvez modifier la procédure stockée pour accepter une table paramètre valorisé comme entrée. Cependant, vous devrez d'abord créer un TYPE de table défini par l'utilisateur qui correspond à la structure du DataTable C# :

CREATE TYPE dbo.PersonType AS TABLE
(
    Name NVARCHAR(50), -- match the length of SomeTable.Column1
    Age INT
);

Ajustez votre 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#, lorsque vous liez la table de données au paramètre PROC, vous devez spécifier le paramètre comme :

parameter.SqlDbType = SqlDbType.Structured;
parameter.TypeName = "dbo.PersonType";

Voir aussi l'exemple ici Passing a Table-Valued Paramètre à une procédure stockée