我有一个创建视图查询,我想检查它是否还不存在,然后创建视图。我试着像这样创作:
CASE WHEN IS NOT EXISTS vw_Delays
THEN
VIEW vw_Delays AS
SELECT RD_RfileID_fk_ind, SUM(DATEDIFF(day, RD_Startdate, RD_EndDate)) AS delays FROM dbo.t_RfDelay
GROUP BY RD_RfileID_fk_ind
END
但它会返回这些错误:
第15行,第1行,第1行,第1行 关键字' CASE'附近的语法不正确。
Msg 102,Level 15,State 1,Line 6
' END'附近的语法不正确。
如何解决这个问题?请任何人帮我解决这个问题吗?
答案 0 :(得分:1)
您需要使用此代码来检查视图是否存在:
IF NOT EXISTS (SELECT * FROM sys.views WHERE Name = N'vw_Delays')
.....
您将遇到的下一个障碍是CREATE VIEW
语句必须是SQL批处理中的第一个 - 因此您无法在存在检查后立即使用它。
我通常做的恰恰相反:
我将此代码用于此设置:
IF EXISTS (SELECT * FROM sys.views WHERE Name = N'vw_Delays')
DROP VIEW dbo.vw_Delays;
GO
CREATE VIEW dbo.vw_Delays
AS
SELECT
RD_RfileID_fk_ind,
SUM(DATEDIFF(day, RD_Startdate, RD_EndDate)) AS delays
FROM
dbo.t_RfDelay
GROUP BY
RD_RfileID_fk_ind