Можно ли внутри процедуры динамически формировать название таблицы к которой я хочу обратиться и использовать его для обращения к таблице (например при ведении логов используются таблицы Logs_2005, Logs_2006 — не переписывать же все процедуры каждый раз заново)?
Используемый сервер — MsSQL 2005
Здравствуйте, Аноним, Вы писали:
А>Можно ли внутри процедуры динамически формировать название таблицы к которой я хочу обратиться и использовать его для обращения к таблице (например при ведении логов используются таблицы 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 ...)
Здравствуйте, 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 ...)
А неужели нет метода по-изящнее?
Здравствуйте, 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>>