Как динамически изменить имя БД с помощью одной хранимой процедуры БД на другую хранимую процедуру БД? - PullRequest
0 голосов
/ 15 декабря 2011

Я использую одну базу данных, например Test (имя базы данных) , в эту базу данных я добавил 10 таблиц и 5 хранимых процедур , теперь я могу вызывать эти процедуры в другой базе данных, например Test2 (имя БД) , я пишу так

Test database stored procedure is 

Create proc GetDetails()
As
select * from Emp;

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

    Test2  database stored procedure is 

    Create proc GetDetails()
    As
Begin
    Exec Test..GetDetails()
End

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

Благодарю вас Hemanth

1 Ответ

0 голосов
/ 15 декабря 2011

Предполагая, что вы можете передать имя целевой базы данных в sproc Test2 (или прочитать его из таблицы конфигурации или чего-то еще), вы можете использовать его следующим образом:

-- assume @dbname has the name of the database where getdetails was created
declare @sql nvarchar(4000), @params nvarchar(4000), @dbname sysname
set @dbname = 'test'
set @sql = @dbname + '..getdetails'
set @params = ''
exec sp_executesql @sql, @params
...