Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.11.23;
Скачать: 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 вся ветка

Текущий архив: 2008.11.23;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.012 c
15-1222085601
^-k2-^
2008-09-22 16:13
2008.11.23
Поздравляю Внука с рождением Сына :)


4-1198642093
Black_Tomcat
2007-12-26 07:08
2008.11.23
Отловить сообщение во втором потоке созданным CreateThread


2-1223575600
programmer90
2008-10-09 22:06
2008.11.23
Завершение работы Windows


15-1222153216
Slider007
2008-09-23 11:00
2008.11.23
С днем рождения ! 23 сентября 2008 вторник


2-1224129438
D@nger
2008-10-16 07:57
2008.11.23
Тип Ixmlnode и запись его в файл