Select 从 while 循环(游标)中进入临时 table

Select into a temp table from within a while loop (cursor)

我主要是想 "union" 我的光标的结果集。由于我无法弄清楚如何 "union" 它们,我想,嘿,为什么不将结果存储到临时文件 table 中,然后仅从该临时文件 table 中存储 select * ]?问题是,当我 运行 这段代码时,它说我的临时文件 table 已经存在。我认为当我执行 select into 时,每次都会尝试创建一个新的临时文件 table。如何在不使用 select into 的情况下插入临时 table?

drop table #mikemarks
declare db_cursor CURSOR FOR SELECT jobid from cxxxxxxx.Campaign_Data_Extension_Names
declare @jobid int
open db_cursor
fetch next from db_cursor into @jobid while @@FETCH_STATUS = 0
begin
    select j.jobid as 'JobID', j.subscriberkey as 'EmailAddress', j.createddate as 'EventDate', jc.errorcode as 'ErrorCode', jc.Description as 'ErrorCodeDescription' into #mikemarks
    from jobsubscribererror j with (nolock)
    inner join jobsubscribererrorcode jc on j.errorcodeid = jc.errorcodeid
    where j.jobid = @jobid
    fetch next from db_cursor into @jobid
end
close db_cursor
deallocate db_cursor

如果您需要在临时 table 中执行此操作,则可以在单个语句中执行此操作而不是循环执行。像这样。

select j.jobid as 'JobID'
    , j.subscriberkey as 'EmailAddress'
    , j.createddate as 'EventDate'
    , jc.errorcode as 'ErrorCode'
    , jc.Description as 'ErrorCodeDescription' 
into #mikemarks
from jobsubscribererror j
inner join jobsubscribererrorcode jc on j.errorcodeid = jc.errorcodeid
join cxxxxxxx.Campaign_Data_Extension_Names n on j.jobid = n.jobid