sql >> Base de Datos >  >> RDS >> Sqlserver

Pasar DataTable al procedimiento almacenado como argumento

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