关于存储过程中的事务

jy00578880 2009-06-30 02:16:16
小弟有一事不明
比如我有一 商品表 内有字段 id,商品名称,数量
我想再一次提交操作中向该表内插入 n条数据
比如 香蕉 5个,苹果 3个,橘子 2个
这样的存储过程如何写 是1条语句根据插入的条数执行n次(在.net环境下加入同一事务中),
还是说可以写成一个存储过程 传进去类似2维数组类型的参数 在存储过程内部循环插入(同一事务中)
有没有高手帮写下这2种情况的 .cs页代码 和 存储过程代码 或是有更好更快的方法 本人小菜鸟先谢谢了
...全文
36 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
lovvver 2009-07-01
  • 打赏
  • 举报
回复
只能循环执行,每次写入一种货物,在同一事务下。
例如:Item是你的货物类
List<Item> itemList = new List<Item>();
//香蕉 5个,苹果 3个,橘子 2个
itemList.Add(new Item(香蕉,5));
itemList.Add(new Item(苹果,3));
itemList.Add(new Item(橘子,2));

public void SaveItems(List<Item> itemList)
{
SqlTransaction stran = ...
...
foreach(Item item in itemList)
{
item.Insert(stran);
//或者自己构造对一个item的插入sql也行,但是执行的时候必须要使用上面的stran,
//以保证这些循环的操作在同一事务下
}
...
}
desegou 2009-07-01
  • 打赏
  • 举报
回复
这个你在前台用事务控制,循环插入再提交就行了,存储过程似乎多条记录参数不太好传的
kkun_3yue3 2009-07-01
  • 打赏
  • 举报
回复
哦对,INSERT前后加上你的事务...意义不大
kkun_3yue3 2009-07-01
  • 打赏
  • 举报
回复
简单,如果你愿意的话
把你的商品类搞成XML的,将此XML作为一个参数传递给存储过程
存储过程解析之即可
INSERT INTO 商品表
SELECT * FROM OPENXML,(略)
jy00578880 2009-07-01
  • 打赏
  • 举报
回复
4楼的你写的 是我问的吗
jy00578880 2009-07-01
  • 打赏
  • 举报
回复
我要看第2种~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~·
谁会50分全给他再加50也行
lixiankun001 2009-06-30
  • 打赏
  • 举报
回复
恩!!看看先!~~~ 嘿嘿 爽
wuyq11 2009-06-30
  • 打赏
  • 举报
回复
存储过程实现
CREATE procedure p_Query
@XTBH varchar(7800)
as
declare @JSBH varchar(7800)
set @XTBH=ltrim(rtrim(@XTBH))
while(len(@XTBH)>0)
begin
if(charindex('/',@XTBH)>0)
begin
set @JSBH=substring(@XTBH,1,charindex('/',@XTBH)-1)
set @XTBH=substring(@XTBH,len(@JSBH)+2,len(@XTBH))

else
begin
set @JSBH=@XTBH
break
end
end
通过数据库操作类,调用存储过程执行事务
jy00578880 2009-06-30
  • 打赏
  • 举报
回复
写下代码啊
wuyoho 2009-06-30
  • 打赏
  • 举报
回复
同意gciyfzx07 说的,在CS中实现事务管理,比较容易些,如果在存储过程中使用事务的话,要一次传一批内容进存储过程,那样比较麻烦。
gciyfzx07 2009-06-30
  • 打赏
  • 举报
回复
你可以一次加入一条记录(可通过存储过程,只是不要有commit),但是当全部添加成功时提交事务,否则回滚。

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧