【发布时间】:2018-11-23 08:49:03
【问题描述】:
我有一个插入语句,它在表中创建一个新行:
string SQLQuery = "INSERT INTO TABLEABC VALUES('" + Rtext + "', '" + TDate + "')";
但我想为 8 周(56 天)间隔的 20 次重复数据创建多行。
例如:
Rtext TDate
John 23/11/2018
我希望它创建:
Rtext TDate
John 23/11/2018
John 18/01/2019
John 15/03/2019
John 10/05/2019
John 05/07/2019
John 30/08/2019
John 25/10/2019
John 20/12/2019
John 14/02/2020
John 10/04/2020
John 05/06/2020
John 31/07/2020
John 25/09/2020
John 20/11/2020
John 15/01/2021
John 12/03/2021
John 07/05/2021
John 02/07/2021
John 27/08/2021
John 22/10/2021
John 17/12/2021
【问题讨论】:
-
递归 cte?每次迭代增加 56 天。
-
只在 1 到 20 的循环中使用 DateTime.AddDays(56) 有什么问题?
-
使用
TDate.AddDays(56)并为每次执行分配参数。不要忘记使用Parameters.Clear()。 -
@jarlh 是这样吗?
DECLARE @i int = 0 WHILE @i < 300 BEGIN SET @i = @i + 1 /* your code*/ END -
你为什么不参数化你的查询呢?这对 SQL 注入很开放。就个人而言,我也会处理 SQL Server 中的其他行;通过使用 rCTE(如@jarlh 所述)或(虚拟)计数表。
标签: c# sql sql-server loops