加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

用T-SQL插入n个记录

发布时间:2020-12-12 16:27:33 所属栏目:MsSql教程 来源:网络整理
导读:我想在表中添加可变数量的记录(天) 我看到了一个整洁的解决方案: SET @nRecords=DATEDIFF(d,'2009-01-01',getdate())SET ROWCOUNT @nRecordsINSERT int(identity,1) INTO #temp FROM sysobjects a,sysobjects bSET ROWCOUNT 0 但可悲的是,在UDF中不起作用(因
我想在表中添加可变数量的记录(天)

我看到了一个整洁的解决方案:

SET @nRecords=DATEDIFF(d,'2009-01-01',getdate())
SET ROWCOUNT @nRecords
INSERT int(identity,1) INTO #temp FROM sysobjects a,sysobjects b
SET ROWCOUNT 0

但可悲的是,在UDF中不起作用(因为#temp和SET ROWCOUNT).有什么想法能如何实现?

目前我正在使用一个WHILE和一个表变量,但在性能方面,这不是一个很好的解决方案.

解决方法

如果您使用SQL 2005或更高版本,则可以使用递归CTE获取日期或数字列表…
with MyCte AS
    (select   MyCounter = 0
     UNION ALL
     SELECT   MyCounter + 1
     FROM     MyCte
     where    MyCounter < DATEDIFF(d,getdate()))
select MyCounter,DATEADD(d,MyCounter,'2009-01-01')
from   MyCte 
option (maxrecursion 0)


/* output...
MyCounter   MyDate
----------- -----------------------
0           2009-01-01 00:00:00.000
1           2009-01-02 00:00:00.000
2           2009-01-03 00:00:00.000
3           2009-01-04 00:00:00.000
4           2009-01-05 00:00:00.000
5           2009-01-06 00:00:00.000
....
170         2009-06-20 00:00:00.000
171         2009-06-21 00:00:00.000
172         2009-06-22 00:00:00.000
173         2009-06-23 00:00:00.000
174         2009-06-24 00:00:00.000

(175 row(s) affected)

*/

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读