Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Passaggio di DataTable alla stored procedure come argomento

È possibile modificare la procedura memorizzata per accettare una tabella parametro di valore come input. Prima, tuttavia, dovrai creare una tabella definita dall'utente TYPE che corrisponda alla struttura di C# DataTable:

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

Regola il tuo 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

In C#, quando si associa il datatable al parametro PROC, è necessario specificare il parametro come:

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

Vedi anche l'esempio qui Passing a Table-Valued Parametro a una stored procedure