Ответ 1
Это потому, что CREATE VIEW должен быть первым оператором в пакете, как описано в этой ссылке MSDN.
Вместо этого вы можете сделать: например.
.....
BEGIN
EXECUTE('CREATE VIEW [dbo].[dummy] AS SELECT 1 AS Dummy')
END
Этот код не работает, возвращая ошибку:
BEGIN
CREATE VIEW [dbo].[dummy] AS SELECT 1 AS Dummy
END
GO`
Incorrect syntax near the keyword 'VIEW'.
Почему?
Примечания:
Наличие инструкции GO кажется, не имеет значения
Внутренний оператор отлично работает за пределами разделителей кода.
Это часть более крупного запроса, но тестируется в изоляции так же, как и представленный здесь.
Это потому, что CREATE VIEW должен быть первым оператором в пакете, как описано в этой ссылке MSDN.
Вместо этого вы можете сделать: например.
.....
BEGIN
EXECUTE('CREATE VIEW [dbo].[dummy] AS SELECT 1 AS Dummy')
END
Вы можете использовать три способа создания временного представления.
1- Ответ AdaTheDev.
2 - создайте временную таблицу, затем вставьте в нее значение, например, create Table #TableName (ID integer)
. См. эту ссылку
3- Использование выражения Common Table [With]. См. эту ссылку