1. ホーム
  2. sql-server

[解決済み] OracleのCREATE OR REPLACE VIEWに相当するSQL Server

2022-09-18 12:18:07

質問

Oracleでは、次のように1つのステートメントでビューを再作成することができます。

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

構文が示すように、これは古いビューを削除し、私が与えたどんな定義でもってそれを再作成します。

MSSQL (SQL Server 2005 またはそれ以降) で同じことを行う同等のものはありますか?

どのように解決するのですか?

上記の解決策は、仕事を成し遂げることができますが、ユーザーのパーミッションを落とすリスクがあります。私は、次のようにビューやストアドプロシージャを作成または置換することを好みます。

IF NOT EXISTS (SELECT * FROM sys.views WHERE object_id = OBJECT_ID(N'[dbo].[vw_myView]'))
    EXEC sp_executesql N'CREATE VIEW [dbo].[vw_myView] AS SELECT ''This is a code stub which will be replaced by an Alter Statement'' as [code_stub]'
GO

ALTER VIEW [dbo].[vw_myView]
AS
SELECT 'This is a code which should be replaced by the real code for your view' as [real_code]
GO