изменение таблицы, имя которой находится в переменной - PullRequest
0 голосов
/ 23 августа 2011

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

Я бы не хотел копировать и вставлять эти таблицы каждый раз, генерируя биты SQL, поэтому моя текущая настройка заключается в том, что у меня есть хранимая процедура, котораявозвращает столбцы ядра, и это загружается в ## TempTableClientName (необходимо, потому что это внешнее приложение, которое обращается к ним, и каждая команда, отправленная на сервер, выглядит как отдельное соединение, поэтому стандартная временная таблица сеанса, похоже, не выполняетзадание).

Теперь я хочу запустить вторую хранимую процедуру, чтобы обновить эту временную таблицу и добавить ее в новые столбцы.Вероятно, будет несколько таких процедур, и в некоторых случаях они, вероятно, будут использоваться совместно.Для этого, чтобы поделиться ими, мне нужно как-то сказать, какую таблицу ## обновить.

Мои текущие параметры выглядят так:

Я могу передать это как строку и использовать динамический sql, но это выглядит грязно.

Я могу применить одну хранимую процедуру для каждого клиента итогда имя таблицы (для каждого клиента) может быть жестко закодировано в процедуре.Кажется, что у него есть потенциал для неоптимального кода (т. Е. Множества очень похожих или даже идентичных процедур).

Кто-нибудь может предложить какие-либо варианты лучше, чем эти?в настоящее время я смотрю на второе, так как клиентов не так много, и это, кажется, самый простой способ сделать что-то.Я хотел бы иметь несколько лучших вариантов ... Я надеялся, что может быть какая-то функция или что-то, что возьмет строку и получит объект таблицы с таким именем ...

1 Ответ

0 голосов
/ 07 ноября 2011

Мое окончательное решение состояло в том, чтобы просто реорганизовать мой код, чтобы моя базовая процедура возвращала все столбцы, которые можно использовать для любого клиента.Это означает, что часто он будет возвращать данные, которые не релевантны (или являются нулевыми).Также этот метод вызывает потенциальные проблемы, если новому клиенту требуются дополнительные столбцы, которые, возможно, потребуется обновить некоторому коду, если он предполагает заданное количество столбцов.

К сожалению, это не очень хорошее решение, но я выбрал его из-за отсутствиядругие варианты.

...