TSQL - 如何迭代字符串列表

Bic*_*ick 4 t-sql cursor

我想创建一个过程,将我的所有作业插入到数据库中。
(a. 我所有的作业都具有相同的特征。b. SSDT 不支持作业代码管理)

现在,我想创建一个脚本来插入所有这些,作为 ac# develpoer,我想我需要用他们的名字初始化一个列表。

我在谷歌搜索时发现这样做的方法是使用内存表,而我能想到的最好的方法就是这个。

declare @jobsNames table(Id int, JobName nvarchar(100))

insert into @jobsNames (Id,JobName)
    select 1,'JobName1' union
    select 2,'JobName2' union
    ......

BEGIN TRANSACTION

DECLARE JobsCursor CURSOR FOR SELECT JobName FROM @jobsNames
OPEN JobsCursor

FETCH NEXT FROM JobsCursor INTO @JobName
WHILE @@Fetch_status = 0
BEGIN
     .. do stuff

     FETCH NEXT FROM JobsCursor INTO @JobName
     WHILE @@Fetch_status = 0
END
COMMIT TRANSACTION
Run Code Online (Sandbox Code Playgroud)

题 -

这是最短/推荐的方式吗?
(这似乎是 foreach 的 hellotof 代码)

Dav*_*ant 5

declare @jobNames table(Id int, JobName nvarchar(100))

insert @jobNames values
    (1, 'JobName1'),
    (2, 'JobName2'),
--
    (10, 'JobName10')

while exists(select 1 from @jobNames)
begin
    declare @id int, @name nvarchar(100)
    select top 1 @id = Id, @name = JobName from @jobNames
    delete from @jobNames where Id = @Id

    -- Do stuff here
end
Run Code Online (Sandbox Code Playgroud)