SQL Server equivalent to Oracle's CREATE OR REPLACE VIEW

后端 未结 9 1788
猫巷女王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:44

    I use:

    IF OBJECT_ID('[dbo].[myView]') IS NOT NULL
    DROP VIEW [dbo].[myView]
    GO
    CREATE VIEW [dbo].[myView]
    AS
    

    ...

    Recently I added some utility procedures for this kind of stuff:

    CREATE PROCEDURE dbo.DropView
    @ASchema VARCHAR(100),
    @AView VARCHAR(100)
    AS
    BEGIN
      DECLARE @sql VARCHAR(1000);
      IF OBJECT_ID('[' + @ASchema + '].[' + @AView + ']') IS NOT NULL
      BEGIN
        SET @sql  = 'DROP VIEW ' + '[' + @ASchema + '].[' + @AView + '] ';
        EXEC(@sql);
      END 
    END
    

    So now I write

    EXEC dbo.DropView 'mySchema', 'myView'
    GO
    CREATE View myView
    ...
    GO
    

    I think it makes my changescripts a bit more readable

提交回复
热议问题