Форум: "Начинающим";
Текущий архив: 2008.11.23;
Скачать: [xml.tar.bz2];
Внизкурсор не возвращает записи Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.005 c