SQL知识小结II

2013-12-02  籽藤 

不知道为嘛对SQL的游标有一种莫名的恐惧,或许是当年C/C++指针的苦头吃多了;也看了一些前辈的文章,说是游标要少用。

当然,虽然不用游标,但遇上逐行操作,我还是有我的办法。

以下脚本就是我所说的‘逐行’操作。有一个临时表变量,里面只有textParam值,其余三列的值都是从textParam这个xml数据中一行一行解析出来的。

这段脚本涉及到几个概念:

  1. with as 构建的查询方式,易读且降低性能损失: http://jc-dreaming.iteye.com/blog/772030
  2. ROW_Number() 自动产生行号: http://msdn.microsoft.com/zh-cn/library/ms186734.aspx
  3. xQuery操作xml: http://blog.csdn.net/jinjazz/article/details/4443585

;with T

as (select ROW_NUMBER() over (order by jobName desc) as Row,

textParam,accountingDate,serverName,dbName

From @table )

update T

set accountingDate = textParam.value('(//TakoJobParameter/Value)[1]','varchar(128)')

, serverName = textParam.value('(//server)[1]','varchar(64)')

, dbName = textParam.value('(//database)[1]','varchar(64)')

where textParam.value('(//TakoJobParameter/name)[1]','varchar(128)')in ('dt_accounting_date','dt_Report_Date')

413°/4133 人阅读/0 条评论 发表评论

登录 后发表评论