powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Не обновляются данные select в цикле\курсоре.
3 сообщений из 3, страница 1 из 1
Не обновляются данные select в цикле\курсоре.
    #39800989
QSetner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть таблица с данными Qoob(id, id projects).
В таблицу занесена одна запись (1).

В процедуре myFoo создаётся временная таблица #moon с одной колонкой TProj и забивается двумя значениями (1 и 2).
Далее в процедуре myFoo перебираются значения TProj и ищутся в таблице Qoob.
Проблема в том, что я получаю одни и те же данные для каждой строки #moon (хотя они должны быть разные, потому что в первой итерации среди списка (1) ищется значение 1, а во второй итерации среди списка (1) ищется значение 2).
Как будто select в курсоре забирает данные из #moon только первый раз.

Я новичок в Ms SQL, поэтому не знаю причины. В примерах всё также как я сделал.

Благодарю за помощь!

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
USE master;  
GO
IF DB_ID ( 'qSetner' ) IS NOT NULL
DROP DATABASE qSetner;
GO
CREATE DATABASE qSetner; 
GO
USE qSetner;




CREATE TABLE Qoob (
	QoobId			INT IDENTITY PRIMARY KEY,
	QoobProj		INT
);

Insert into Qoob values (1)

GO

CREATE PROC myFoo
AS
BEGIN

	CREATE TABLE #heh
	(
		one INT,
		two INT
	)
	
	CREATE TABLE #moon
	(
		TProj INT
	)
	
	INSERT INTO #moon VALUES (1)
	INSERT INTO #moon VALUES (2)
	

	DECLARE @QProj INT
	DECLARE @QoobFound INT	
	DECLARE test_cur CURSOR FOR 
	SELECT TProj FROM #moon
	OPEN test_cur
	FETCH NEXT FROM test_cur INTO @QProj
	WHILE @@FETCH_STATUS = 0
	BEGIN
	
		SELECT @QoobFound = QoobId FROM Qoob WHERE (QoobProj = @QProj)
		
		INSERT INTO #heh VALUES (@QoobFound, @QProj)
		
		FETCH NEXT FROM test_cur INTO @QProj
		
	END
	
	CLOSE test_cur
	DEALLOCATE test_cur
	
	select * from #heh
	
END
GO


EXEC MyFoo
GO



...
Рейтинг: 0 / 0
Не обновляются данные select в цикле\курсоре.
    #39800991
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
SELECT @QoobFound = QoobId FROM Qoob WHERE (QoobProj = @QProj)
if @@rowcount > 0
 INSERT INTO #heh VALUES (@QoobFound, @QProj)


ЗЫ: Завязывайте с курсорами.
...
Рейтинг: 0 / 0
Не обновляются данные select в цикле\курсоре.
    #39800992
QSetner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm, Благодарю!
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Не обновляются данные select в цикле\курсоре.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]