Я хочу проверить, существует ли конкретный вид перед его запросом. Я использую динамический SQL для создания запроса:Проверьте, существует ли вид перед его запросом
DECLARE @sqlCommand varchar(1000)
DECLARE @viewName varchar(1000)
DECLARE @otherDB varchar(1000)
SET @sqlCommand = 'IF EXISTS(SELECT 1 FROM ' + @otherDB + '.sys.views WHERE name=''' + @viewName + ''')
BEGIN
SELECT * FROM ' + @viewName + '
END'
EXEC (@sqlCommand)
Итак, все работает нормально, пока существует @viewName. Однако, если @viewName мнение, что не существует в sys.views, я получаю сообщение об ошибке компилятора:
The OLE DB provider "SQLNCLI11" for linked server "server" does not contain the table @viewName. The table either does not exist or the current user does not have permiossions on that table.
я бы подумал, что, поскольку используется в заявлении IF, было бы просто пропустить обработку запросов представления. Однако, похоже, что View имеет, чтобы существовать в противном случае я получаю вышеуказанную ошибку.
Я пробовал альтернативные решения, такие как использование строк для имен View, но не повезло. Я также пробовал решение в: How to check the existence of a view, но в какой-то момент мне нужно указать имя вида в моем запросе, и он будет жаловаться
Любая информация была бы принята с благодарностью!
Спасибо за ответ. Тем не менее, я должен извиниться, поскольку оставил важный пункт. Я буду предоставлять базу данных sys.views в предложении FROM. В результате я использовал динамический SQL для запроса (я отредактировал свой исходный вопрос) – alpha
Я считаю, что ваш ответ указывает мне в правильном направлении! Мне просто нужно поиграть с одиночными кавычками, чтобы скомпилировать его. Большое спасибо. – alpha