Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Не обновляются данные select в цикле\курсоре. / 3 сообщений из 3, страница 1 из 1
13.04.2019, 23:43
    #39800989
QSetner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не обновляются данные select в цикле\курсоре.
Есть таблица с данными 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
14.04.2019, 00:02
    #39800991
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не обновляются данные select в цикле\курсоре.
Код: sql
1.
2.
3.
SELECT @QoobFound = QoobId FROM Qoob WHERE (QoobProj = @QProj)
if @@rowcount > 0
 INSERT INTO #heh VALUES (@QoobFound, @QProj)


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


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