2016-10-19 2 views
0

У меня есть запрос, который я хочу использовать каждый месяц, но таблица, на которую он указывает, немного изменится. Я хочу использовать функцию, аналогичную find/replace, чтобы просто обновить часть имен таблиц, на которые делается ссылка. Каждая таблица просто изменит свое имя на Month_Year для файла. Я пробовал локальную переменную с объявлением/установкой, и она не работает. Это то, что я хотел бы сделать ...найти/заменить в SQL-сервере

declare @file_name varchar(max) 
SET @file_name = 'oct_16' --set as month_year used in table name 

alter table [email protected]_name 
add LFDOB varchar(max) 
+4

Вам необходимо переоценить дизайн базы данных, чтобы это не было необходимо. Создание новой таблицы для каждого месяца - плохой дизайн, за исключением некоторых очень, очень специфических случаев в нише. – alroc

+0

Несмотря на проблему @alroc, вы можете создать этот текст на основе текущей даты, если это поможет, вместо того, чтобы каждый месяц изменять запрос или SP. – Andrew

+0

Просьба описать основные условия или мотивацию, которые, по вашему мнению, приводят к этому требованию, поскольку почти наверняка их можно решить с помощью более подходящей схемы базы данных, которая не требует переименования таблиц. –

ответ

0

Вам нужно динамический запрос

exec ('alter table sp_panel_+'@file_name+' add LFDOB varchar(max)') 
0

Я просто понял, что это фактическая «найти/заменить» функцию в SQL. Он будет делать трюк, пока мы не сможем полностью автоматизировать

Смежные вопросы