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

ADO.NET clásico:¿cómo pasar UDT al procedimiento almacenado?

Este artículo podría ser un poco más de ayuda.

Esencialmente, creará una nueva DataTable que coincida con el esquema y luego la pasará como un parámetro.

El código de prepareatatable() probablemente sería algo como:

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

Después de lo cual, tendría que agregar sus identificadores de ubicación:

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

Luego asigne dt como parámetro:

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