У меня есть sql хранимый proc, где я использую курсор, который содержит набор идентификаторов из оператора select, и я использую эти id, переходя один за другим, используя курсор для получения значений в другие переменные и использовать эти переменные для соединения sql. Моя проблема заключается в том, когда я выполняю это, я получаю много возвращенных таблиц, тогда как мне нужна только одна возвращаемая таблица.SQL-курсор, возвращающий большое количество таблиц
SET NOCOUNT ON
declare @BSVal as int
declare @GSVal as int
declare @mID as int
declare @qID as int
DECLARE M_Cursor cursor for
select
ms.MID,ms.QID
from vM As ms join QS as qs
ON ms.QSID=qs.QIDjoin
Mar as mar on mar.MarID=qs.MarID
where (ms.Cid='Web')
open M_Cursor
FETCH NEXT FROM M_Cursor
INTO @mID, @qID
--Get values
WHILE @@FETCH_STATUS = 0
BEGIN
set @BSVal= (select top 1 SCID from vSC where (EnID in
(select EnID from En where EnName='BAIDU')
and QTID=1 and [email protected] [email protected])order by ITime desc);
set @GSVal= (select top 1 SCID from vSC where (EnID in
(select EnID from En where EnName='GRAPHIC') and QTID=1
and [email protected] [email protected]) order by ITime desc);
select * from
vM m
join vw5TABLE BNDCG on (m.QSid=BNDCG.QID And BNDCG.Position=1)
join vw5TABLE GNDCG on (m.QSid=GNDCG.QID And GNDCG.Position=1)
where
[email protected]
and [email protected]
and [email protected] qID
and [email protected] qID
and [email protected]
FETCH NEXT FROM M_Cursor
INTO @MID, @QSID
END
CLOSE M_Cursor;
DEALLOCATE M_Cursor;
Спасибо! звучит правильно, я буду использовать временную таблицу, предложенную вами. – Lav
Еще один вопрос о связанной заметке, запрос возвращает нулевые строки, а также, как избежать получения нулевых строк в выводе, является единственным способом добавить NOT NOT для каждого условия - Спасибо – Lav
Не против вышеупомянутого вопроса, после использования подхода temp table никакие нулевые строки не возвращались. – Lav