检查是否存在sql视图,然后在更改之前动态创建它

时间:2016-02-10 16:09:46

标签: sql sql-server sql-view

我正在尝试检查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]
---
---

以上脚本会抛出此错误

  

Msg 102,Level 15,State 1,Procedure test,Line 1   ' AS'附近的语法不正确。

我可以知道正确的方法吗?

2 个答案:

答案 0 :(得分:3)

CREATE声明不完整。您可以通过将其编辑为以下内容来创建该过程。

CREATE VIEW [dbo].[test] AS SELECT 1 'foo'

创建后,您可以继续改变它。

编辑:完全转义它将如下所示:

EXEC dbo.sp_executesql @statement = N' CREATE VIEW [dbo].[test1] AS SELECT 1 ''foo'' '

答案 1 :(得分:0)

您的代码中没有实际的视图定义。话虽如此,为什么不放弃视图确实,然后您的代码可以始终创建视图而不是尝试ALTER