2015-12-01 56 views
0

我试图本质上“联合”我的光标的结果集。由于我无法弄清楚如何“结合”它们,我想,嘿,为什么不将结果存储到临时表中,然后从该临时表中删除select *?问题是,当我运行这段代码时,它说我的临时表已经存在。我想当我做select into时,它会尝试每次创建一个新的临时表。如何在不使用select into的情况下插入临时表中?从一个while循环(光标)中选择一个临时表

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 
+1

你为什么使用游标? – KiwiPiet

+0

无需循环做插入。这应该基于设置。并注意那些NOLOCK提示。它不仅仅是脏读。 http://blogs.sqlsentry.com/aaronbertrand/bad-habits-nolock-everywhere/ –

+0

@KiwiPiet我通过SELECT语句遍历表“Campaign_Data_Extension_Names”中返回的每个JobID。 –

回答

3

如果您需要在临时表中使用此功能,您可以使用单个语句而不是循环来完成此操作。像这样的东西。

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 
+0

谢谢我会给你一个机会! –

相关问题