sql >> Databáze >  >> RDS >> Sqlserver

Předávání parametru typu 'object' v parametru s hodnotou tabulky pro sloupec sql_variant

Tento příspěvek je již mnoho let starý, ale narazil jsem na stejný problém a mám řešení. Pokud nepoužíváte DataTable, ale místo toho naplňujete kolekci SqlDataRecord, můžete nastavit datový typ SqlDataRecord na SqlDbType.Variant.

 List<SqlDataRecord> dataTable = new List<SqlDataRecord>();
var dr = new SqlDataRecord(
                            new SqlMetaData("Id", SqlDbType.Int),
                            new SqlMetaData("Value", SqlDbType.Variant));

dr.SetInt32(0, id);
dr.SetValue(1, myObject);

dataTable.Add(dr);

[...]

SqlCommand sqlCommand = new SqlCommand("dbo.MyProc");
var structuredParam = sqlCommand.Parameters.Add("myTableParam", SqlDbType.Structured);
structuredParam.Value = dataTable;


  1. Chyba převodu dat hromadného načtení (neshoda typu nebo neplatný znak pro zadanou kódovou stránku) pro řádek 1, sloupec 4 (rok)

  2. Jak změnit řazení na utf8_bin jedním tahem

  3. Závažná chyba:Volání členské funkce query() na null

  4. Vyberte neduplicitní záznamy ve sloupci tabulky MySQL