T-SQL 批量插入,更新

 1     public void Initialize(Dictionary<long, long> code)
 2         {
 3             var sql = @"
 4                 declare @code_list xml
 5                 set        @code_list=N'
 6                 <CodeList>
 7                     {0}
 8                 </CodeList>'
 9                 insert into        ZTOSubscribe(FormCode,BillCode,SubscribeState,UpdataTime,Remark)
10                 select            T.c.value('(./FormCode,text())[1]','bigint'),T.c.value('(./BillCode,text())[1]','bigint'),0,GETDATE(),''
11                 from                @code_list.nodes(N'/CodeList/Code') T(c) ";
12             var sqlBlock = @"
13                 <Code>
14                     <FormCode>{0}</FormCode>
15                     <BillCode>{1}</BillCode>
16                 </Code>";
17             var sqlExcute = string.Format(sql, string.Concat(code.Select(brf => string.Format(sqlBlock, brf.Key, brf.Value)).ToArray()));
18             SqlHelper.ExecuteNonQuery("Data Source=.;Initial Catalog=Test;Integrated Security=SSPI;", CommandType.Text, sqlExcute);
19         }
20 
21         public void Update(List<SubscribeResult> entity)
22         {
23             var sql = @"
24             declare @subscribe_list xml
25             set @subscribe_list=N'
26             <SubscribeList>
27                 {0}
28             </SubscribeList>
29             '
30             update    ZTOSubscribe
31             set        SubscribeState = T.c.value(N'(./Status,text())[1]',N'bit'),UpdataTime = GETDATE(),Remark=T.c.value(N'(./Remark,text())[1]',N'nvarchar(80)')
32             from        ZTOSubscribe o
33                         join @subscribe_list.nodes(N'/SubscribeList/Subscribe') T(c) on T.c.value(N'(./FormCode,text())[1]',N'bigint')= o.FormCode";
34             var sqlBlock = @"
35             <Subscribe>
36                     <FormCode>{0}</FormCode>
37                     <Status>{1}</Status>
38                     <Remark>{2}</Remark>
39             </Subscribe>";
40             var sqlExcute = string.Format(sql, string.Concat(entity.Select(x => string.Format(sqlBlock, x.OrderId, x.Status, x.Remark))));
41             SqlHelper.ExecuteNonQuery("Data Source=.;Initial Catalog=Test;Integrated Security=SSPI;", CommandType.Text, sqlExcute);
42         }

 

posted @ 2017-09-08 09:48  活在云里雾里梦里  阅读(462)  评论(0)    收藏  举报