Передача данных в хранимую процедуру
У меня есть datatable, созданный на С#.
using (DataTable dt = new DataTable())
{
dt.Columns.Add("MetricId", typeof(int));
dt.Columns.Add("Descr", typeof(string));
dt.Columns.Add("EntryDE", typeof(int));
foreach (DataGridViewRow row in dgv.Rows)
{
dt.Rows.Add(row.Cells[1].Value, row.Cells[2].Value, row.Cells[0].Value);
}
// TODO: pass dt
}
И у меня есть хранимая процедура
CREATE PROCEDURE [dbo].[Admin_Fill]
-- Add the parameters for the stored procedure here
@MetricId INT,
@Descr VARCHAR(100),
@EntryDE VARCHAR(20)
Я хочу передать данные, хранящиеся в этой хранимой процедуре, как?
Ответы
Ответ 1
Вы можете использовать параметр таблицы с таблицей SQL Server 2008/.NET 3.5....
Отметьте руководство по MSDN
Кроме того, поскольку есть другие доступные опции, у меня есть сравнение трех подходов к передаче нескольких значений (одно поле) в sproc (TVP vs XML vs CSV)
Ответ 2
-
Вам необходимо определить тип таблицы, который вы хотите передать в Определенные пользователем типы таблиц в своей базе данных.
-
Затем вам нужно добавить параметр в свою сохраненную процедуру, чтобы передать его следующим образом:
@YourCustomTable AS [dbo].YourCustomTable Readonly,
-
Затем, когда у вас есть настройки ваших строк, назовите его следующим образом:
// Setup SP and Parameters
command.CommandText = "YOUR STORED PROC NAME";
command.Parameters.Clear();
command.CommandType = CommandType.StoredProcedure;
command.Parameters.AddWithValue("@someIdForParameter", someId);
command.Parameters.AddWithValue("@YourCustomTable",dtCustomerFields).SqlDbType = SqlDbType.Structured;
//Execute
command.ExecuteNonQuery();
Это должно решить вашу проблему.
Ответ 3
Мы обычно сжимаем данные в XML-документы и передаем данные в базу данных как параметр NTEXT.