Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Przekazywanie parametru typu „object” w parametrze wycenianym w tabeli dla kolumny sql_variant

Ten post ma już wiele lat, ale trafiłem na ten sam problem i mam rozwiązanie. Jeśli nie używasz DataTable, ale zamiast tego wypełnisz kolekcję SqlDataRecord, możesz ustawić typ danych 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. JBoss ponownie łączy się po przekroczeniu limitu czasu połączenia

  2. Generuj skrypty — tylko dane — znaleziono cykliczne zależności

  3. Zapytanie o połączenia Sql

  4. Kiedy lepiej przechowywać flagi jako maskę bitową zamiast używać tabeli asocjacyjnej?

  5. Tabela w Excelu z procedury składowanej SQL Server z polem parametru w skoroszycie