Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Параметр для процедуры  [new]
antonych
Member

Откуда:
Сообщений: 157
Здравстуйте.
В хранимую процедуру на MS SQL2005 с клиента передается в качестве параметра @Table имя таблицы, для которой нужно выполнить INSERT (или UPDATE).
Есть ли иной способ для этого, кроме как строить строку типа:

DECLARE @str AS varchar(1000)
SET @str='UPDATE '+@Table+ ...
EXEC(@str)


Вроде бы, в MS SQL2005 нет никаких макроподстановок?
13 ноя 09, 17:46    [7927933]     Ответить | Цитировать Сообщить модератору
 Re: Параметр для процедуры  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5111
antonych
...Есть ли иной способ для этого...

создать для каждой таблицы отдельную процедуру, с клиента вызывать нужную.
13 ноя 09, 17:57    [7927991]     Ответить | Цитировать Сообщить модератору
 Re: Параметр для процедуры  [new]
MustDie
Member

Откуда: Подмосковье
Сообщений: 229
Видимо, структура этих таблиц должна быть одинакова, раз меняется только имя таблицы?...
Что уже само по себе странно.


способов море:
делать, как сказал Дедушка, - все с клиента
использовать динамический SQL
сделать представление по структуре такое же как таблицы с доп.полем - для имени таблицы, на представление вешать instead of триггер и в нем уже все разгребать...

... и каждый геморройнее другого...

но самый верный способ - избавиться от однотипных таблиц! нормализацию не дураки придумали.
если надо разделять данные - вводите поля признаков и т.д.
13 ноя 09, 18:27    [7928103]     Ответить | Цитировать Сообщить модератору
 Re: Параметр для процедуры  [new]
vah
Member

Откуда:
Сообщений: 2649
antonych
Здравстуйте.
В хранимую процедуру на MS SQL2005 с клиента передается в качестве параметра @Table имя таблицы, для которой нужно выполнить INSERT (или UPDATE).
Есть ли иной способ для этого, кроме как строить строку типа:

DECLARE @str AS varchar(1000)
SET @str='UPDATE '+@Table+ ...
EXEC(@str)


Вроде бы, в MS SQL2005 нет никаких макроподстановок?


Я бы педавал в переменную процедуры @flag int, целочисленные значения и в зависимости от их значения выполнял определенный INSERT или UPDATE с конкретной таблицей. Без динамического SQL.
13 ноя 09, 22:21    [7928546]     Ответить | Цитировать Сообщить модератору
 Re: Параметр для процедуры  [new]
antonych
Member

Откуда:
Сообщений: 157
Спасибо.
15 ноя 09, 12:04    [7930736]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить