Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

DataTable als Argument an die gespeicherte Prozedur übergeben

Sie können die gespeicherte Prozedur ändern, um eine Tabelle zu akzeptieren Wertparameter als Eingang. Zunächst müssen Sie jedoch einen benutzerdefinierten Tabellentyp erstellen, der der Struktur der C#-Datentabelle entspricht:

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

Passen Sie Ihr SPROC an:

CREATE PROCEDURE dbo.InsertPerson
    @Person dbo.PersonType READONLY
AS
BEGIN
  INSERT INTO SomeTable(Column1, Column2) 
     SELECT p.Name, p.Age
     FROM @Person p;
END

Wenn Sie in C# die Datentabelle an den PROC-Parameter binden, müssen Sie den Parameter wie folgt angeben:

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

Siehe auch das Beispiel hier Passing a Table-Valued Parameter zu einer gespeicherten Prozedur