![]() |
|
Модераторы: Akina |
![]()
|
|
| Cleric |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 47 Регистрация: 14.12.2004 Где: Москва/Н.Новгород Репутация: нет Всего: нет |
ситуация такая:
в цикле обрабатываются таблицы с именами имеющими на конце некий номер, (который как раз и меняется) т.е. например 'dbname.dbo.t1', 'dbname.dbo.t2',... при этом некоторой переменной @S на каждом этапе цикла присваивается какое то значение из текущей таблицы: т.е.: SET @S = (SELECT SUM(x) FROM >?< WHERE ...) где на месте >?< должна быть соответствующая счетчику цикла таблица вопрос: что написать на месте >?<? или иными словами как обращаться в таких случаях к таблице зная ее имя? заранее спасибо |
|||
|
||||
| HalkaR |
|
|||
![]() Пуфыстый назгул ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2132 Регистрация: 8.12.2002 Где: В Москве Репутация: нет Всего: 42 |
Можно попробовать EXEC.Что-то типа
На работоспособность не тестил, но идея такая. |
|||
|
||||
| Cleric |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 47 Регистрация: 14.12.2004 Где: Москва/Н.Новгород Репутация: нет Всего: нет |
когда программа пытается выполнить EXEC ('SET @S = (SELECT SUM(x) FROM ' + @TABLE_NAME +' WHERE ...)'), то просит объявить переменную @S
здесь, разумеется, можно сделать все через временную таблицу куда каждый раз будет подобным заливаться текущая таблица (EXEC( 'INSERT INTO #T SELECT * FROM + @TABLE_NAME +' WHERE ...)'), и уже из этой временной таблицы #T, имя которой постоянно, можно брать сумму... но все таки хотелось бы обойтись без лишних наворотов, что б запрос быстрее выполнялся... |
|||
|
||||
| HalkaR |
|
|||
![]() Пуфыстый назгул ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2132 Регистрация: 8.12.2002 Где: В Москве Репутация: нет Всего: 42 |
Cleric, а в чем проблема обьявить @S?
Добавлено @ 11:21 Кстати можно написать хранимку в которую текстом передвать название и получать воврощаемое значение. |
|||
|
||||
| Cleric |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 47 Регистрация: 14.12.2004 Где: Москва/Н.Новгород Репутация: нет Всего: нет |
эээ... вот кусок кода:
все равно будет просить объявить @S или где мне ее объявлять тогда? проблема что exec не "видит" объявленную переменную а просто выполняет команду Это сообщение отредактировал(а) Cleric - 21.7.2006, 11:25 |
|||
|
||||
| HalkaR |
|
|||
![]() Пуфыстый назгул ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2132 Регистрация: 8.12.2002 Где: В Москве Репутация: нет Всего: 42 |
Cleric, да ты прав здесь каша с областями видимости какимито - я не знал такой проблемы
Попробуй вариант с хранимкой. Добавлено @ 11:27 Я попробовал вот так
Добавлено @ 11:28 Работает, но тебе это надо? |
|||
|
||||
| Cleric |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 47 Регистрация: 14.12.2004 Где: Москва/Н.Новгород Репутация: нет Всего: нет |
а как в таком случае будет выглядеть синтаксис того как переменной @S присваивается нужное значение? там наверное опять та же проблема возникнет... Это сообщение отредактировал(а) Cleric - 21.7.2006, 11:35 |
|||
|
||||
| HalkaR |
|
|||
![]() Пуфыстый назгул ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2132 Регистрация: 8.12.2002 Где: В Москве Репутация: нет Всего: 42 |
Мда, задачка ...
|
|||
|
||||
![]()
|
| Правила форума "MS SQL" | |
|
|
Запрещается! Публиковать ссылки и обсуждать взлом чего бы то ни было.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MS SQL Server | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |