SQL Server中 用存储过程 怎样 在同一时间向一张表插入多条数据

如 在网上买书 ,买两本同时将两本书的信息插入到数据库

如果必须同时插的话,建议你使用一个临时表。 在存储过程中先将数据整理的临时表中。假设临时表名叫temp,目标表名叫 result。
最后执行 insert into result select * from temp;
就可以讲 temp表中的数据 一次入到 目标表中了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-12-04
在存储过程中写两个INSERT 就可以了
create proc up_insert
as
begin
insert into test valuse(1);
insert into test values(2);
end;追问

但是我插入的 是 不同的数据, 参数怎么写啊!!!!

追答

create proc up_insert
@a int,
@b int
as
begin
insert into test valuse(@a);
insert into test values(@b);
end;

追问

你这个 完全是写死 的

追答

参数和存储过程里面的SQL你都可以自己修改的,甚至你连表名可以动态的

本回答被网友采纳
第2个回答  2013-12-04
/// <summary>
/// 执行多条SQL语句,实现数据库事务。
/// </summary>
/// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的SqlParameter[])</param>
public static void ExecuteSqlTran(Hashtable SQLStringList)
{
using (SqlConnection conn = new SqlConnection(connectionString))
{
conn.Open();
using (SqlTransaction trans = conn.BeginTransaction())
{
SqlCommand cmd = new SqlCommand();
try
{
//循环
foreach (DictionaryEntry myDE in SQLStringList)
{
string cmdText=myDE.Key.ToString();
SqlParameter[] cmdParms=(SqlParameter[])myDE.Value;
PrepareCommand(cmd,conn,trans,cmdText, cmdParms);
int val = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();

trans.Commit();
}
}
catch
{
trans.Rollback();
throw;
}
}
}
}

eg:

Hashtable SQLStringList = new Hashtable();
//循环开始
string cmdText = "insert into userinfo (username,userpwd)values(@username,@userpwd) ";
SqlParameter[] cmdParms = new SqlParameter[2];
cmdParms[0] = new SqlParameter( "@username ", "name ");
cmdParms[1] = new SqlParameter( "@userpwd ", "pwd ");
....
SQLStringList.Add(cmdText, cmdParms);
//循环结束
ExecuteSqlTran(SQLStringList);追问

就像 有 两个 插入sql语句 ,一个 插入一条数据,另一个 插入多条数据 该怎么办