Как передать имя базы данных в хранимую процедуру? - PullRequest
1 голос
/ 16 апреля 2011

Как передать имя базы данных в хранимую процедуру?Я пробовал что-то вроде

create procedure dbo.Test
    @databaseName varchar(100)
as
select * from @databasename.Person.Address
go

Я хотел бы использовать это так

execute dbo.Test @databaseName = 'AdventureWorks'

Ответы [ 3 ]

4 голосов
/ 16 апреля 2011

Это невозможно описанным способом.

Вы можете сделать это с динамическим SQL , но это создает свой собственный набор проблем.

1 голос
/ 16 апреля 2011

Похоже, вы пытаетесь переместить информацию, которая должна быть частью строки подключения, в логику хранимой процедуры.Если вы ожидаете, что таблица Person будет находиться в другой базе данных, это имя базы данных должно быть зафиксировано при развертывании - например, с помощью сценария параметризованного создания и sqlcmd.

0 голосов
/ 17 апреля 2011

Да, вам нужно провести динамический sql.Хотя в этой статье явно не говорится о динамическом создании sql, этого должно быть достаточно для начала: http://www.relationalis.com/articles/2011/4/17/dealing-with-quotes-in-sql.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...