【发布时间】:2016-08-23 21:45:58
【问题描述】:
我能否使用存储过程执行批量更新,该存储过程将数据从用户输入发送到临时表中,而该用户输入不在数据表中。
如果我有一个 foreach 循环,它接受用户输入,例如来自复选框列表和文本框的值,我想知道的是如何在我的存储过程中参数化这些单独的值,或者我是否可以在我的代码中做到这一点。我不能使用表值参数,因为我使用的 SQL 版本不支持它。
conn.Open();
foreach(ListItem item in CheckBoxList1.Items)
{
if(item.Selected)
{
//handling parameters in loop.
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "Update_Account_Table";
cmd.Parameters["@SeqNum"].Value = amount.Text;
cmd.Parameters["@SeqDate"].Value = DateTime.ParseExact(datepicker.Text, "mmddyyyy", CultureInfo.InvariantCulture);
cmd.Parameters["@Account_ID"].CheckBoxList1.SelectedValue;
cmd.ExecuteNonQuery();
}
conn.Close();
}
存储过程
CREATE TABLE TempTable
(
SeqNum int,
SeqDate datetime,
Account_ID varchar(2)
);
CREATE PROCEDURE [ACCOUNTTABLE_UPDATE]
AS
SET NOCOUNT ON
BEGIN
UPDATE AccountTable
SET SeqNum = t.SeqNum, SeqDate = t.SeqDate
FROM AccountTable AT
INNER JOIN TempTable t ON AT.AccountID = t.AccountID
END
【问题讨论】:
-
我之前使用 XML 参数做过类似的事情。你可以阅读sqlservercentral.com/Forums/Topic1017781-391-1.aspx
标签: c# asp.net sql-server stored-procedures