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

Klassisches ADO.NET - Wie übergibt man UDT an gespeicherte Prozeduren?

Dieser Artikel könnte etwas hilfreicher sein.

Im Wesentlichen erstellen Sie eine neue DataTable, die dem Schema entspricht, und übergeben sie dann als Parameter.

Der Code von Preparedatatable() würde wahrscheinlich etwa so aussehen:

var dt = new DataTable();
dt.Columns.Add("Id", typeof(int));
return dt;

Danach müssten Sie Ihre LocationIds hinzufügen:

foreach(var id in locationIds)
{
    var row = dt.NewRow();
    row["Id"] = id;
    dt.Rows.Add(row);
}

Weisen Sie dann dt als Parameter zu:

var param = cmd.Parameters.AddWithValue("@LocationIDs", dt);
param.SqlDbType = SqlDbType.Structured;
param.TypeName = "dbo.IdentityType";