Название таблицы как переменная?
От: Аноним  
Дата: 21.10.06 14:29
Оценка:
Можно ли внутри процедуры динамически формировать название таблицы к которой я хочу обратиться и использовать его для обращения к таблице (например при ведении логов используются таблицы Logs_2005, Logs_2006 — не переписывать же все процедуры каждый раз заново)?

Используемый сервер — MsSQL 2005
Re: Название таблицы как переменная?
От: ilya_ny  
Дата: 21.10.06 18:49
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Можно ли внутри процедуры динамически формировать название таблицы к которой я хочу обратиться и использовать его для обращения к таблице (например при ведении логов используются таблицы Logs_2005, Logs_2006 — не переписывать же все процедуры каждый раз заново)?


А>Используемый сервер — MsSQL 2005


можно. и исполbзовать exec
например (я не проверял)

declare @table_name varchar(100)
set @table_name = 'Logs_2006'


declare @sql varchar(100)
set @sql = 'insert ' + @table_name + ' values(' + @p1 + ',' + @p2 + ')' ....

exec @sql



но в твоей задаче логи можно каждый год архивировать и поьзоваться только одной таблийей Logs и одной таблицей для архива например:

Logs_Hist (year int, .... Logs fields ...)
Re[2]: Название таблицы как переменная?
От: Аноним  
Дата: 23.10.06 16:58
Оценка:
Здравствуйте, ilya_ny, Вы писали:

_>Здравствуйте, Аноним, Вы писали:


А>>Можно ли внутри процедуры динамически формировать название таблицы к которой я хочу обратиться и использовать его для обращения к таблице (например при ведении логов используются таблицы Logs_2005, Logs_2006 — не переписывать же все процедуры каждый раз заново)?


А>>Используемый сервер — MsSQL 2005


_>можно. и исполbзовать exec

_>например (я не проверял)

_>
_>declare @table_name varchar(100)
_>set @table_name = 'Logs_2006'


_>declare @sql varchar(100)
_>set @sql = 'insert ' + @table_name + ' values(' + @p1 + ',' + @p2 + ')' ....

_>exec @sql
_>



_>но в твоей задаче логи можно каждый год архивировать и поьзоваться только одной таблийей Logs и одной таблицей для архива например:


_>Logs_Hist (year int, .... Logs fields ...)



А неужели нет метода по-изящнее?
Re[3]: Название таблицы как переменная?
От: Jericho113 Украина  
Дата: 24.10.06 06:10
Оценка:
Здравствуйте, Аноним, Вы писали:


А>А неужели нет метода по-изящнее?

Хм а какой поизящнее метод нужен???
Итак все динамически.
Формируеш строку с тем чего тебе нужно и потом выполняеш ее.
Приведи пример изящества которое тебе нужно или того чего не хватает в ответе на твой вопрос?
NetDigitally yours ....
Re[4]: Название таблицы как переменная?
От: снежок Россия  
Дата: 24.10.06 07:41
Оценка: 42 (1)
Здравствуйте, Jericho113, Вы писали:
А>>А неужели нет метода по-изящнее?
J>Хм а какой поизящнее метод нужен???
J>Итак все динамически.
J>Формируеш строку с тем чего тебе нужно и потом выполняеш ее.
J>Приведи пример изящества которое тебе нужно или того чего не хватает в ответе на твой вопрос?

Может подход следует пересмотреть?
Посмотрите секционирование (partitioned view, partitioned table)(Book on-line). Тогда динамики никакой не потребуется. Сервер при insert-е в partioned view/table по дате сам сможет решать в какую таблицу писать данные.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.