用2个存储过程来保存吧,一个保存台头,一个保存明细(一笔一笔保存) 。
建议使用参数化 ,具体怎么写我列个简单示例
Header 表
ID TabkeKey XX YY GOODS
Detail 表
ID Table1Key ZZ Good
其中Table1Key与Header表ID关联。
--保存Header (保存Detail类似)
If Exists(Select Top 1 AA From Table1 Where TableKey=@Kkey)
Update Table1 Set XX=@XX,YY=@YY
--如果有必要 OUTPUT inserted.ID 自动ID
Where TableKey=@Kkey
Else
Insert into Table1(TableKey,XX,YY)
--如果有必要 OUTPUT inserted.ID 自动ID
Select @Kkey,@XX,@YY
如果台头有GoodS数量要更新,只需要在第二个存储过程添加一句
--并更新goods数量
Update Table1 Set Goods=(Select Sum(Good) From Table2 Where Table1Key=@key)
Where TableKey=@Kkey
说明
先保存台头,最好返回自动ID,无需管Goods数量,Goods由存储过程2(保存明细的时候顺便更新即可,这样安全可靠点)
保存明细的时候,也将台头的自动ID保存。
这里,订单数据应该好定义的,你的疑问是问多条订单明细的时候,怎么把数据传递到存储过程吧?
使用XML数据对象进行传输就好。
谢谢回答哈,可是我不会xml啊
@我在等: 。。。
无语哦!都什么年代了,你不会XML?无论你做什么开发,现在都基本离不开XML,至少也会设计到XML。而且,你做.NET开发。。。你说你不会XML,那。。。还是别做了!