У меня есть хранимая процедура, которая получает данные из другой базы данных на том же сервере.
Я не буду жестко задавать какую базу данных использовать, вместо этого она будет настраиваемой.Возможно ли это без динамического sql?
Лучшее решение, которое я мог придумать, - это сначала запустить хранимую процедуру, которая использует динамический sql для генерации группы представлений.Затем я могу выбрать данные из этих представлений, чтобы избежать использования динамического SQL для всего.
Пример:
DECLARE
@databaseName nvarchar(max),
@sql nvarchar(max)
-- Get this value from a configuration table
SET @databaseName = 'TestDatabase'
IF EXISTS(SELECT NULL FROM dbo.SysObjects WHERE [Name] = 'TestView')
DROP VIEW dbo.TestView
SET @sql = 'CREATE VIEW dbo.TestView AS SELECT * FROM ' + @databaseName +'.dbo.TestTable'
EXEC (@sql)
--I can now select from TestView using regular query.
Я предполагаю, что поступаю неправильно.Есть ли лучший способ сделать это?