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
我主要是想 "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