Проверьте, существует ли представление SQL, а затем создайте его динамически, прежде чем изменять его.
Я пытаюсь проверить, существует ли представление SQL Server и, если оно не существует, создать представление с динамическим сценарием, а затем изменить его.
Я использую следующий скрипт
IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[test]') AND OBJECTPROPERTY(id,N'IsView') = 1)
BEGIN
EXEC dbo.sp_executesql @statement = N' CREATE VIEW [dbo].[test] AS '
END
GO
ALTER VIEW [dbo].[test]
---
---
Приведенный выше скрипт выдает эту ошибку
Сообщение 102, Уровень 15, Состояние 1, Процедурное тестирование, Строка 1
Неверный синтаксис рядом с 'AS'.
Могу ли я знать правильный способ сделать это?
2 ответа
CREATE
утверждение неполное. Вы можете создать процедуру, отредактировав ее следующим образом.
CREATE VIEW [dbo].[test] AS SELECT 1 'foo'
Как только он создан, вы можете перейти к его изменению.
Изменить: Полностью экранированный это будет выглядеть так:
EXEC dbo.sp_executesql @statement = N' CREATE VIEW [dbo].[test1] AS SELECT 1 ''foo'' '
У вас нет фактического определения представления в вашем коде. При этом, почему бы просто не отбросить представление, если оно существует, и тогда ваш код может просто создать представление вместо того, чтобы пытаться сделать ALTER
?