2014-01-07 4 views
1

Есть ли встроенный способ в SQL Server для переопределения существующей хранимой процедуры для одной транзакции?Возможно затенение/переопределение хранимой процедуры SQL Server

Скажем, у меня есть хранимая процедура

prc_GetValidUsers 
@param1 int 
... 
INSERT INTO * 
........prc_GetIdFromString param3 
... 
... 

Можно ли для одной транзакции, чтобы пересмотреть то, что prc_GetIdFromString быть что-то еще? Или это невозможно сделать?

+0

Почему вы не используете параметр в своем sp, чтобы создать путь к другой таблице в зависимости от этого параметра? – Lamak

+0

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

+0

В тесте, создайте dbo.prc_TestGetIdFromString, удалите весь дополнительный код. Вызовите этот SP вместо этого. Нет объектно-ориентированных понятий, таких как переезд в базу данных. Если вы хотите быть фантазией, создайте схему [test]. Затем вы можете вызвать test.prc_GetIdFromString вместо dbo.prc_TestGetIdFromString ... –

ответ

0

Если вы используете SQL Server 2005 или более позднюю версию, вы можете использовать SYNONYM для указания правильного кода во время выполнения. Для этого потребуется переместить существующий код в SP с новым именем, поэтому SYNONYM может иметь имя исходного SP (так что все, что ссылалось на исходный SP, не нужно было менять). Вы также создали бы еще один SP, который выполнял бы уменьшенную функциональность, которую вы хотите. Затем SYNONYM можно указать на SP, который вы хотите запустить.

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

  • Нет связанных вопросов^_^