sql >> Databasteknik >  >> RDS >> Sqlserver

Skickar parameter av typen 'object' i tabellvärderad parameter för sql_variant-kolumnen

Det här inlägget är många år gammalt nu men jag stöter på samma problem och har en lösning. Om du inte använder en DataTable utan istället fyller i en samling av SqlDataRecord kan du ställa in datatypen för SqlDataRecord till 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. Definiera en posttyp i PL/SQL-block som refererar till en samling av sig själv

  2. Konvertera "datetimeoffset" till "date" i SQL Server (T-SQL-exempel)

  3. Hur man ändrar begränsning

  4. PostgreSQL:Inaktivera anslutningar tillfälligt