Я пытаюсь по существу «объединить» результирующие наборы моего курсора. Поскольку я не могу понять, как их «объединить», я решил, что, почему бы не сохранить результаты во временную таблицу, а затем просто 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
Почему вы используете курсор? – KiwiPiet
Не нужно зацикливать, чтобы делать вставки. Это должно быть установлено на основе. И будьте осторожны с этими советами NOLOCK. Это гораздо больше, чем просто грязные чтения. http://blogs.sqlsentry.com/aaronbertrand/bad-habits-nolock-everywhere/ –
@KiwiPiet Я повторяю инструкцию SELECT для каждого идентификатора JobID, который возвращается из таблицы «Campaign_Data_Extension_Names». –