Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Classic ADO.NET - Como passar UDT para procedimento armazenado?


Este artigo pode ser um pouco mais de ajuda.

Essencialmente, você criará uma nova DataTable que corresponda ao esquema e a passará como um parâmetro.

O código de prepareatatable() provavelmente seria algo como:
var dt = new DataTable();
dt.Columns.Add("Id", typeof(int));
return dt;

Depois disso, você teria que adicionar seus locationIds:
foreach(var id in locationIds)
{
    var row = dt.NewRow();
    row["Id"] = id;
    dt.Rows.Add(row);
}

Em seguida, atribua dt como parâmetro:
var param = cmd.Parameters.AddWithValue("@LocationIDs", dt);
param.SqlDbType = SqlDbType.Structured;
param.TypeName = "dbo.IdentityType";