在 SQL 服务器中的同一脚本中创建多个视图

creating multiple views in the same script in SQL Server

我有一个 table,它是 INNER JOIN 的结果,然后 table 我必须应用一堆查询,所以最后整个代码在 SQL 真的很大,将来(这是主要问题)我会很难理解我做了什么。

因此,出于这个原因,我正在考虑创建视图的可能性,因此在每个步骤中我都会创建一个视图,并且我知道每个查询的作用。

因此,为了这个目标,我开始使用 IF ELSE 语句来创建视图(如果它们不存在等),但我遇到了很多错误和问题。

首先,这是我使用 IF 语句创建视图的方式:

-- This portion of code is common in all the views
IF NOT EXISTS
(
    SELECT 1
    FROM sys.views
    WHERE Name = 'NAME_OF_THE_VIEW'
)
BEGIN

    EXEC('CREATE VIEW NAME_OF_THE_VIEW AS SELECT 1 as Val')

END

GO
ALTER VIEW NAME_OF_THE_VIEW
AS

-- Here I put the query of the view

SELECT *
FROM table_1

当我执行这段代码时它可以工作,但是 SQL Server Management Studio 在 ALTER VIEW 语句中加下划线“NAME_OF_THE_VIEW”,当我悬停鼠标时它说:无效的对象名称 'NAME_OF_THE_VIEW'。我不明白为什么即使存在假定的错误它仍然有效。

另一个问题是,当我引入更多代码(如上面的代码)以便在同一脚本中创建其他视图时,整个 ALTER VIEW 语句都带有下划线,并且当我将鼠标悬停时出现此消息;语法不正确:'ALTER VIEW' 必须是批处理中唯一的语句。

所以问题是:我可以将所有内容都放在同一个脚本中,我可以在其中创建视图以避免执行大量子查询,并且不会出现此错误吗? SQL-服务器版本是15.

So the question is: hoy can I put everything in the same script, where I can create views to avoid doing a lot of subqueries, and without getting this errors?

无需检查视图是否存在。只需创建或更改视图

CREATE OR ALTER VIEW NAME_OF_THE_VIEW
AS

-- Here I put the query of the view

SELECT *
FROM table_1

GO

CREATE OR ALTER VIEW NAME_OF_THE_OTHER_VIEW
AS

-- Here I put the query of the view

SELECT *
FROM table_1