xhon Ответов: 1

Создание представления с параметром schemabinding против использования двух частей имя (схема.объект)


Привет,
Я пытаюсь создать представление с помощью schemabinding. Ибо я получил ошибку:
Cannot schema bind view 'nameOfMyTable.vSomethingAddedHere' because name 'nameOfMyTable' is invalid for schema binding.


Чтобы избежать ошибки, я попытался использовать имя из двух частей (schema.object), но это не сработало.


Ранее я собрал схему для таблицы
nameOfMyTable
для того, чтобы создать представление.

Что я уже пробовал:

CREATE VIEW nameOfMyTable.vSomethingAddedHereWITH Schemabinding
AS
SELECT b.Name
FROM [dbo.][nameOfMyTable][n]
INNER JOIN Tickets t ON [n].ID = t.ID
INNER JOIN Peple p ON p.ID = t.ID

1 Ответов

Рейтинг:
9

Richard Deeming

Цитата:
FROM [dbo.][nameOfMyTable][n]
Это синтаксическая ошибка. Вы поставили сепаратор (.) внутри квадратных скобок.

Попробуй:
CREATE VIEW nameOfMyTable.vSomethingAddedHere
WITH Schemabinding
AS
    SELECT b.Name
    FROM [dbo].[nameOfMyTable] [n]
    INNER JOIN Tickets t ON [n].ID = t.ID
    INNER JOIN Peple p ON p.ID = t.ID


xhon

Большое спасибо!

xhon

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

Объявить @myView = name_Of_the_View;
S£LECT * от @myView

Я полагаю, что должен

Richard Deeming

Нет, вы не можете использовать переменную для ссылки на имя таблицы или представления. Для этого вам придется использовать динамический SQL, что потенциально оставит вас открытым для уязвимости SQL-инъекции.