2015-12-01 2 views
0

Я пытаюсь по существу «объединить» результирующие наборы моего курсора. Поскольку я не могу понять, как их «объединить», я решил, что, почему бы не сохранить результаты во временную таблицу, а затем просто select * из этой временной таблицы? Проблема в том, что когда я запускаю этот код, он говорит, что моя временная таблица уже существует. Я думаю, когда я делаю select into, который каждый раз пытается создать новую временную таблицу. Как вставить в таблицу temp без использования 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 для каждого идентификатора JobID, который возвращается из таблицы «Campaign_Data_Extension_Names». –

ответ

3

Если вам это нужно в таблице temp, вы можете сделать это в одном утверждении, а не в цикле. Что-то вроде этого.

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

Спасибо, я сделаю это! –

Смежные вопросы