Оценивать в T-SQL - PullRequest
       65

Оценивать в T-SQL

8 голосов
/ 27 марта 2009

У меня есть хранимая процедура, которая позволяет параметру IN указывать, какую базу данных использовать. Затем я использую предварительно определенную таблицу в этой базе данных для запроса. Проблема, с которой я сталкиваюсь, заключается в объединении имени таблицы с этим именем базы данных в моих запросах. Если бы у T-SQL была функция оценки, я мог бы сделать что-то вроде

eval(@dbname + 'MyTable')

В настоящее время я застрял в создании строки, а затем использую exec() для запуска этой строки в качестве запроса. Это грязно, и я бы не стал создавать строку. Есть ли способ, которым я могу оценить переменную или строку, чтобы я мог сделать что-то вроде следующего?

SELECT *
FROM eval(@dbname + 'MyTable')

Я бы хотел, чтобы он оценил, чтобы он выглядел так:

SELECT *
FROM myserver.mydatabase.dbo.MyTable

Ответы [ 11 ]

0 голосов
/ 05 апреля 2009
declare @sql varchar(256);
set @sql = 'select * into ##myGlobalTemporaryTable from '+@dbname
exec sp_executesql @sql

select * from ##myGlobalTemporaryTable

копирует в глобальную временную таблицу, которую затем можно использовать как обычную таблицу

...