Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Одна операция с несколькими таблицами, количество таблиц заранее неизвестно 
:(
    Опции темы
Yelodia
Дата 18.8.2010, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 14.12.2009

Репутация: нет
Всего: нет



Доброго времени суток! Попалось мне интересное задание - осуществить выборку по нескольким одинаковым по структуре таблицам. В базе данных есть несколько таблиц, названия которых отличаются последними символами - номерами. Например, Rev_01, Rev_02, Rev_03 итд. Они имеют одинаковую структуру, и из них нужно сделать выборку. Но перед этим нужно получить весь список имен этих таблиц, так как их количество заранее неизвестно. Все это должно выполняться в хранимой процедуре, без кода Delphi. Нашла такую процедуру sp_MSforeachtable, но она выполняет операцию для всех таблиц в базе данных, а надо только по таблицам с именами по маске "Rev". Есть ли способ решить такую задачку на T-SQL? Заранее спасибо.
PM MAIL ICQ   Вверх
kobra
Дата 18.8.2010, 19:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 730
Регистрация: 15.6.2005
Где: Грузия, Тбилиси

Репутация: 5
Всего: 9



Код

select TABLE_NAME
from INFORMATION_SCHEMA.TABLES
where TABLE_NAME like N'Rev%'
на этом запросе сформировать курсор и ...
PM MAIL   Вверх
Yelodia
Дата 20.8.2010, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 14.12.2009

Репутация: нет
Всего: нет



Допустим, есть курсор, который возвратил имена таблиц. Их помещаю в переменную @name:
Код
FETCH NEXT FROM @cur1 INTO @name1

SQL сервер ругается на конструкцию @name1.Cell_name при выборке
Код

SELECT @name1.Cell_name

Как это можно обойти?
PM MAIL ICQ   Вверх
kobra
Дата 20.8.2010, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 730
Регистрация: 15.6.2005
Где: Грузия, Тбилиси

Репутация: 5
Всего: 9



чтото вроде
Код

declare @sql nvarchar(max)
set @sql = 'select * from ' + @name1
exec @sql

я бы сделал временную таблицу и заганял туда данные из таблиц, а далше сделал селект из временной таблики
PM MAIL   Вверх
Yelodia
Дата 25.8.2010, 09:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 14.12.2009

Репутация: нет
Всего: нет



Спасибо! Все получилось 
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS SQL"
Akina

Akina

Запрещается!

Публиковать ссылки и обсуждать взлом чего бы то ни было.

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы составления неспецифических запросов рассматриваются здесь
  • Используйте теги [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS SQL Server | Следующая тема »


 




[ Время генерации скрипта: 0.0506 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.