SQL Server equivalent to Oracle's CREATE OR REPLACE VIEW

后端 未结 9 1787
猫巷女王i
猫巷女王i 2020-12-02 10:24

In Oracle, I can re-create a view with a single statement, as shown here:

CREATE OR REPLACE VIEW MY_VIEW AS
SELECT SOME_FIELD
FROM SOME_TABLE
WHERE SOME_COND         


        
9条回答
  •  盖世英雄少女心
    2020-12-02 10:51

    In SQL Server 2016 (or newer) you can use this:

    CREATE OR ALTER VIEW VW_NAMEOFVIEW AS ...
    

    In older versions of SQL server you have to use something like

    DECLARE @script NVARCHAR(MAX) = N'VIEW [dbo].[VW_NAMEOFVIEW] AS ...';
    
    IF NOT EXISTS(SELECT * FROM sys.views WHERE name = 'VW_NAMEOFVIEW')
    -- IF OBJECT_ID('[dbo].[VW_NAMEOFVIEW]') IS NOT NULL
    BEGIN EXEC('CREATE ' + @script) END
    ELSE
    BEGIN EXEC('ALTER ' + @script) END
    

    Or, if there are no dependencies on the view, you can just drop it and recreate:

    IF EXISTS(SELECT * FROM sys.views WHERE name = 'VW_NAMEOFVIEW')
    -- IF OBJECT_ID('[dbo].[VW_NAMEOFVIEW]') IS NOT NULL
    BEGIN 
       DROP VIEW [VW_NAMEOFVIEW];
    END
    
    CREATE VIEW [VW_NAMEOFVIEW] AS ...
    

提交回复
热议问题