我有一個表是 INNER JOIN 的結果,然后對那個表我必須應用一堆查詢,所以最后 SQL 中的整個代碼真的很大而且在未來(這是主要問題)我會很難理解我做了什么。
因此,出于這個原因,我正在考慮創建視圖的可能性,因此在每個步驟中我都創建了一個視圖,并且我知道每個查詢的作用。
因此,為了這個目標,我開始使用 IF ELSE 陳述句來創建視圖(如果它們不存在等),但我遇到了很多錯誤和問題。
首先,這是我使用 IF 陳述句創建視圖的方式:
-- This portion of code is common in all the views
IF NOT EXISTS
(
SELECT 1
FROM sys.views
WHERE Name = 'NAME_OF_THE_VIEW'
)
BEGIN
EXEC('CREATE VIEW NAME_OF_THE_VIEW AS SELECT 1 as Val')
END
GO
ALTER VIEW NAME_OF_THE_VIEW
AS
-- Here I put the query of the view
SELECT *
FROM table_1
當我執行此代碼時,它可以作業,但是 SQL Server Management Studio 在 ALTER VIEW 陳述句中強調了“NAME_OF_THE_VIEW”,當我將滑鼠懸停時,它說:無效的物件名稱“NAME_OF_THE_VIEW”。我不明白為什么如果有一個假定的錯誤它仍然有效。
另一個問題是,當我為了在同一個腳本中創建其他視圖而引入更多類似上述代碼的代碼時,整個 ALTER VIEW 陳述句都帶有下劃線,并且當我將滑鼠懸停時會出現此訊息;語法不正確:“ALTER VIEW”必須是批處理中的唯一陳述句。
所以問題是:我可以將所有內容放在同一個腳本中,我可以在其中創建視圖以避免執行大量子查詢,并且不會出現此錯誤嗎?SQL-Server 版本是 15。
uj5u.com熱心網友回復:
所以問題是:我可以將所有內容放在同一個腳本中,我可以在其中創建視圖以避免執行大量子查詢,并且不會出現此錯誤嗎?
無需檢查視圖是否存在。只需創建或更改視圖
CREATE OR ALTER VIEW NAME_OF_THE_VIEW
AS
-- Here I put the query of the view
SELECT *
FROM table_1
GO
CREATE OR ALTER VIEW NAME_OF_THE_OTHER_VIEW
AS
-- Here I put the query of the view
SELECT *
FROM table_1
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/430069.html
