![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
курсор не возвращает записи [D7, XP]
ekto © (2008-10-15 09:33:00)всем доброго времени суток
есть запрос(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
возвращает записи. Где ошибка?
ekto (2008-10-15 10:32:00) [1]
> Palladin © (15.10.08 10:20) [8]
спасибо большое!
Palladin (2008-10-15 10:20:00) [2]@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:12:00) [3]
> Palladin © (15.10.08 10:09) [6]
почему? Поле в выборку надо включить?
Palladin (2008-10-15 10:09:00) [4]сомневаюсь, что подобное сработает
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 09:57:00) [5]не, не помогает
ekto (2008-10-15 09:53:00) [6]
> Palladin © (15.10.08 09:50) [3]
вроде как NEXT FROM по умолчанию... ща гляну
Palladin (2008-10-15 09:50:00) [7]упс, извнияюсь, внутри второй open не заметил...
ну не знаю как 2005, я сильно еще с ним не работал, но в 2000 я явно всегда указываю
FETCH NEXT FROMcrLenta INTO @name, @i
WHILE @@FETCH_STATUS = 0
BEGIN
OPEN crID
FETCH NEXT FROMcrID INTO @mess_id, @text_id
print @@fetch_status
ekto (2008-10-15 09:46:00) [8]
> Palladin © (15.10.08 09:42) [1]
да не, ругается на crID... т.е. не ругается, просто не выбирается ничего, хотя должно
Palladin (2008-10-15 09:42:00) [9]
> ekto © (15.10.08 09:33)
интересный ты парень... ругается на crLenta, а проверяешь crID... молодец, что еще можно сказать...