Вниз
Скачать: CL | DM;

курсор не возвращает записи   Найти похожие ветки 

← →
ekto ©   (2008-10-15 09:33) [0]

всем доброго времени суток

есть запрос(SQL Server 2005):

DECLARE @name NVARCHAR(255), @i INT
DECLARE crLenta CURSOR STATIC
 FOR SELECT [name],  COUNT(tl.id) cn  
       FROM text_lenta tl JOIN messages ms ON tl.id = ms.id_text
     GROUP BY  [name]
     HAVING COUNT(tl.id) > 1

DECLARE crID CURSOR STATIC
 FOR SELECT tl.id , ms.id
       FROM text_lenta tl JOIN messages ms ON tl.id = ms.id_text
      WHERE [name] = @name
 
 OPEN crLenta

 FETCH crLenta INTO @name, @i
 WHILE @@FETCH_STATUS = 0
   BEGIN
     OPEN crID
     FETCH crID INTO @mess_id, @text_id
     print @@fetch_status

строка print @@fetch_status печатает -1, хотя отдельно выполненный запрос:

SELECT tl.id , ms.id
       FROM text_lenta tl JOIN messages ms ON tl.id = ms.id_text
      WHERE [name] = @name

возвращает записи. Где ошибка?


← →
Palladin ©   (2008-10-15 09:42) [1]


> ekto ©   (15.10.08 09:33) 

интересный ты парень... ругается на crLenta, а проверяешь crID... молодец, что еще можно сказать...


← →
ekto ©   (2008-10-15 09:46) [2]


> Palladin ©   (15.10.08 09:42) [1]

да не, ругается на crID... т.е. не ругается, просто не выбирается ничего, хотя должно


← →
Palladin ©   (2008-10-15 09:50) [3]

упс, извнияюсь, внутри второй open не заметил...
ну не знаю как 2005, я сильно еще с ним не работал, но в 2000 я явно всегда указываю

FETCH NEXT FROM crLenta INTO @name, @i
WHILE @@FETCH_STATUS = 0
  BEGIN
    OPEN crID
    FETCH NEXT FROM crID INTO @mess_id, @text_id
    print @@fetch_status


← →
ekto ©   (2008-10-15 09:53) [4]


> Palladin ©   (15.10.08 09:50) [3]

вроде как NEXT FROM по умолчанию... ща гляну


← →
ekto ©   (2008-10-15 09:57) [5]

не, не помогает


← →
Palladin ©   (2008-10-15 10:09) [6]

сомневаюсь, что подобное сработает

DECLARE crID CURSOR STATIC
FOR SELECT tl.id , ms.id
      FROM text_lenta tl JOIN messages ms ON tl.id = ms.id_text
     WHERE [name] = @name


← →
ekto ©   (2008-10-15 10:12) [7]


> Palladin ©   (15.10.08 10:09) [6]

почему? Поле в выборку надо включить?


← →
Palladin ©   (2008-10-15 10:20) [8]

@name на момент декларации - Null
попробуй так


DECLARE @name NVARCHAR(255), @i INT
DECLARE crLenta CURSOR STATIC
FOR SELECT [name],  COUNT(tl.id) cn  
    FROM text_lenta tl JOIN messages ms ON tl.id = ms.id_text
    GROUP BY  [name]
    HAVING COUNT(tl.id) > 1

OPEN crLenta
FETCH crLenta INTO @name, @i
WHILE @@FETCH_STATUS = 0
  BEGIN
    DECLARE crID CURSOR STATIC
    FOR SELECT tl.id , ms.id
       FROM text_lenta tl JOIN messages ms ON tl.id = ms.id_text
       WHERE [name] = @name

    OPEN crID
    FETCH crID INTO @mess_id, @text_id
    print @@fetch_status
    ....
    close crID
    deallocate crID


← →
ekto ©   (2008-10-15 10:32) [9]


> Palladin ©   (15.10.08 10:20) [8]

спасибо большое!



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.01 c
2-1223846450
Dars73
2008-10-13 01:20
2008.11.23
Как сделать чтобы кнопка осталась нажатой


2-1223819376
lewka
2008-10-12 17:49
2008.11.23
WebBrowser


2-1223853210
ply
2008-10-13 03:13
2008.11.23
работа с архивами


2-1223103931
Dr. Genius
2008-10-04 11:05
2008.11.23
Вычитание времени


2-1223621197
Grant
2008-10-10 10:46
2008.11.23
Соединение с удаленной базой данных




   Наверх