【发布时间】:2019-04-12 11:29:29
【问题描述】:
我有一个带有非自动增量 ID 字段的表。我需要创建一个 varchar 数组,然后将数组中的数据插入表中。
问题是我不知道如何声明这样的数组。而且我不知道如何通过循环中的索引来处理值。
declare @newCodesList - ???
declare @counter int = 0
declare @lastID int = (select MAX(Id) from OrganizationCode)
while @counter < LEN(@newCodesList)
begin
@lastID = @lastID + 1
insert into OrganizationCodeCopy values(@lastID, @newCodesList[@counter])
@counter = @counter + 1
end
在上面的代码中,我尝试在找到最后一条记录 ID 并声明计数器后在循环中插入值
【问题讨论】:
-
在上面的代码中,我认为不需要数组。你为什么需要它 ?如果您解释了您要实现的目标,这将有所帮助,也许有更好的方法来做到这一点
-
为什么要使用循环?使用基于集合的方法。您实际上想在这里实现什么目标?
-
我需要一个脚本,它更新表格,用新值填充它。我从来没有尝试插入很多新值,所以循环是第一件事,在我脑海中浮现)主要思想只有新数据是手动输入的。我的意思是上次我用手插入了 20 个值。 @GuidoG
-
看起来像是
STRING_SPLIT的工作和/或numbers table 上的连接(或@newCodesList上的直接连接,如果它实际上是一个表值参数)。如果可以避免的话,你不想在 SQL 中编写循环;找到一种方法来改用表格来改写你的问题。
标签: arrays sql-server loops