Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 цикл в запросе  [new]
PlanB
Member

Откуда: Moscow
Сообщений: 2761
Добрый день!

Пытаюсь сделать цикл на простой запрос вида

SELECT '[dbo].[092010_134d]' as "tb_name", a.regn, a.c3 AS "capital_134"
FROM [dbo].[092010_134d] a
WHERE a.c1 IN ('000')


Неутешительные результаты под катом. В чем проблема, спасибо!

+
--Создаем таблицу для результатов
CREATE TABLE #t
(
    tb_name         VARCHAR(20),
    regn            INT,
    capital_134		FLOAT
)
	/*
    * Создаем курсор с именами таблиц и пробегаем по нему и выполняем обработку каждой таблицы отдельно
    */  

DECLARE tab_cur CURSOR  
FOR
    SELECT '[dbo].[062010_134d]' AS tb_name
    UNION ALL
	SELECT '[dbo].[092010_134d]'
OPEN tab_cur
    
	DECLARE @tab_name VARCHAR(20),
		    @dyn_sql VARCHAR(8000)

FETCH NEXT FROM tab_cur INTO @tab_name
WHILE @@FETCH_STATUS = 0
BEGIN
    /*
    * Формируем строку с запросом для выполнения, подставляя имя таблицы
    */
    SET @dyn_sql = '
		SELECT 
			''' + @tab_name + ''' as "tb_name", 
			a.regn as "regn", 
			a.c3 AS "capital_134"
		FROM ''' + @tab_name + ''' a
		WHERE a.c1 IN (''000'')
		'
    
    /*
    * Теперь выполняем полученный запрос
    */
    INSERT INTO #t
      (
	tb_name,
    regn,
    capital_134
      )
    EXEC (@dyn_sql)
    
    /*
    * Получаем следующую порцию данных
    */
    FETCH NEXT FROM tab_cur INTO @tab_name
END
    
    CLOSE tab_cur
    DEALLOCATE tab_cur

SELECT *
FROM   #t t


DROP TABLE #t
1 апр 14, 12:26    [15815345]     Ответить | Цитировать Сообщить модератору
 Re: цикл в запросе  [new]
Glory
Member

Откуда:
Сообщений: 104760
Вы бы прежде, чем делать EXEC (@dyn_sql), вывели что ли куда-нибудь содержимое @dyn_sql
1 апр 14, 12:40    [15815427]     Ответить | Цитировать Сообщить модератору
 Re: цикл в запросе  [new]
PlanB
Member

Откуда: Moscow
Сообщений: 2761
FROM ''' + @tab_name + ''' a ---------->> FROM ' + @tab_name + ' a
1 апр 14, 12:41    [15815433]     Ответить | Цитировать Сообщить модератору
 Re: цикл в запросе  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
Тут цикл не нужен.
В один динамический запрос можно свести.
Хотя есть предел количества таблиц - но плодить так таблицы - зло ещё то.
2 апр 14, 02:17    [15819290]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить