SQL Server에서 CREATE OR REPLACE VIEW를 작동시키는 방법은 무엇입니까?
CREATE OR REPLACE VIEW
SQL Server에서 작동하지 않는 것 같습니다.어떻게 이식합니까?CREATE OR REPLACE VIEW
SQL Server에서 작업하시겠습니까?
이것이 제가 하려는 일입니다.
CREATE OR REPLACE VIEW data_VVVV AS
SELECT
VCV.xxxx,
VCV.yyyy AS yyyy,
VCV.zzzz AS zzzz
FROM
TABLE_A
;
아이디어 있어요?
@Khan의 대답을 빌리면, 저는 다음과 같이 할 것입니다.
IF OBJECT_ID('dbo.test_abc_def', 'V') IS NOT NULL
DROP VIEW dbo.test_abc_def
GO
CREATE VIEW dbo.test_abc_def AS
SELECT
VCV.xxxx
,VCV.yyyy AS yyyy
,VCV.zzzz AS zzzz
FROM TABLE_A
SQL Server 2016 답변
SQL Server 2016을 사용하여 다음 작업을 수행할 수 있습니다(MSDN 소스).
DROP VIEW IF EXISTS dbo.MyView
또는 (MSDN 소스):
CREATE OR ALTER VIEW dbo.MyView
다음은 보기의 내용을 복제할 필요가 없는 다른 방법입니다.
IF (NOT EXISTS (SELECT 1 FROM sys.views WHERE name = 'data_VVV'))
BEGIN
EXECUTE('CREATE VIEW data_VVVV as SELECT 1 as t');
END;
GO
ALTER VIEW data_VVVV AS
SELECT VCV.xxxx, VCV.yyyy AS yyyy, VCV.zzzz AS zzzz FROM TABLE_A ;
첫 번째는 보기의 존재 여부를 확인합니다(다른 방법도 있음).만약 그것이 존재하지 않는다면, 간단하고 멍청한 것으로 그것을 만드세요.만약 그렇다면, 그냥 다음으로 넘어가세요.alter view
진술.
편집: 이 질문은 중복으로 표시되었지만 여전히 주목을 받고 있습니다.@JaKXz에서 제공한 답변이 올바르고 수락된 답변이어야 합니다.
보기가 있는지 확인해야 합니다.그럼.CREATE VIEW
또는ALTER VIEW
결과에 따라
IF OBJECT_ID('dbo.data_VVVV') IS NULL
BEGIN
CREATE VIEW dbo.data_VVVV
AS
SELECT VCV.xxxx, VCV.yyyy AS yyyy, VCV.zzzz AS zzzz FROM TABLE_A VCV
END
ELSE
ALTER VIEW dbo.data_VVVV
AS
SELECT VCV.xxxx, VCV.yyyy AS yyyy, VCV.zzzz AS zzzz FROM TABLE_A VCV
BEGIN
END
승인된 솔루션은 동일한 문을 두 번 유지해야 하는 문제가 있지만, 매우 효율적이지는 않습니다.이론적으로 Gordon Linoff의 솔루션은 배치의 첫 번째 줄이어야 하므로 MSSQL에서 작동하지 않는 것을 제외하고는 실행이 가능합니다.
드롭/만들기가 제안된 질문에 응답하지 않습니다.다음은 원래 질문에 따라 작업을 수행합니다.
if not exists (select * from sysobjects where name='TABLE_A' and xtype='V')
exec ('create view SELECT
VCV.xxxx,
VCV.yyyy AS yyyy,
VCV.zzzz AS zzzz
FROM TABLE_A')
이와 같은 것은 어떻습니까, 댓글은 다음과 같이 설명해야 합니다.
--DJ - 2015-07-15 Example for view CREATE or REPLACE
--Replace with schema and view names
DECLARE @viewName NVARCHAR(30)= 'T';
DECLARE @schemaName NVARCHAR(30)= 'dbo';
--Leave this section as-is
BEGIN TRY
DECLARE @view AS NVARCHAR(100) = '
CREATE VIEW ' + @schemaName + '.' + @viewName + ' AS SELECT '''' AS [1]';
EXEC sp_executesql
@view;
END TRY
BEGIN CATCH
PRINT 'View already exists';
END CATCH;
GO
--Put full select statement here after modifying the view & schema name appropriately
ALTER VIEW [dbo].[T]
AS
SELECT '' AS [2];
GO
--Verify results with select statement against the view
SELECT *
FROM [T];
치어스 - DJ
보기를 삭제하고 다시 만들면 보기를 변경할 수 있습니다.다음을 사용하여 보기를 삭제하고 다시 작성합니다.
IF EXISTS
(SELECT NAME FROM SYS.VIEWS WHERE NAME = 'dbo.test_abc_def')
DROP VIEW dbo.test_abc_def) go
CREATE VIEW dbo.test_abc_def AS
SELECT
VCV.xxxx,
VCV.yyyy AS yyyy
,VCV.zzzz AS zzzz
FROM TABLE_A
IF NOT EXISTS(select * FROM sys.views where name = 'data_VVVV ')
BEGIN
CREATE VIEW data_VVVV AS
SELECT VCV.xxxx, VCV.yyyy AS yyyy, VCV.zzzz AS zzzz FROM TABLE_A VCV
END
ELSE
BEGIN
ALTER VIEW data_VVVV AS
SELECT VCV.xxxx, VCV.yyyy AS yyyy, VCV.zzzz AS zzzz FROM TABLE_A VCV
END
언급URL : https://stackoverflow.com/questions/18534919/how-to-make-create-or-replace-view-work-in-sql-server
'programing' 카테고리의 다른 글
고유한 이름을 가진 테이블 생성 (0) | 2023.06.24 |
---|---|
URL 주소를 이미 알고 있는 Python을 사용하여 이미지를 로컬로 저장하는 방법은 무엇입니까? (0) | 2023.06.24 |
Android 앱에서 Google Firebase 로그아웃 및 사용자 잊기 (0) | 2023.06.24 |
PLSQL Anonymous 블록이 완료되면 출력이 없는 이유는 무엇입니까? (0) | 2023.06.19 |
판다의 데카르트 제품 (0) | 2023.06.19 |