SQL語法提示工具SQL Prompt教程:使用SQL Prompt重構(gòu)批處理或?qū)ο螅ㄉ希?/h1>
SQL Prompt是一款實用的SQL語法提示工具。SQL Prompt根據(jù)數(shù)據(jù)庫的對象名稱、語法和代碼片段自動進行檢索,為用戶提供合適的代碼選擇。自動腳本設(shè)置使代碼簡單易讀——當(dāng)開發(fā)者不大熟悉腳本時尤其有用。SQL Prompt安裝即可使用,能大幅提高編碼效率。
Louis Davidson揭示了一些有用的提示功能,可在開發(fā)過程中重構(gòu)單個代碼塊或模塊,這將提高代碼質(zhì)量,減少繁瑣的工作,使測試更簡單,有時甚至是全部三種功能。
SQL Prompt是我一直使用的工具,用于代碼完成和代碼格式化任務(wù),以至于在沒有它的情況下編寫查詢感覺非常錯誤。用JOIN編寫SQL語句,它會自動建議ON條件。在ORDER BY或者GROUP BY子句中,它有助于選擇分組列。審查一些丑陋的代碼(也許是自己寫的)用您喜歡的樣式很好地格式化它。
但是,SQL Prompt具有許多其他功能,這些功能我很少用,但在需要的時候非常有用。本教程演示了SQL Prompt如何幫助“小規(guī)?!?SQL重構(gòu)任務(wù),該任務(wù)的范圍通常僅限于您在本地工作的單批代碼或代碼對象。這些任務(wù)直接在SSMS查詢窗口中執(zhí)行,并且可以幫助您以各種方式重構(gòu)代碼,這些方式在測試存儲過程和對存儲過程進行故障排除時非常有用。這篇文章主要是教程的上半部分內(nèi)容~
本文中的所有示例均從WideWorldImporters示例數(shù)據(jù)庫的新恢復(fù)的副本開始。
重命名別名/變量
提示:將光標(biāo)置于別名或變量上,從上下文菜單中選擇“重命名別名/變量”,或按F2鍵,然后輸入新名稱。當(dāng)前批次或?qū)ο笾械乃衅ヅ漤椌迅摹?/p>
有時,程序員為變量或別名選擇了較差的名稱。我已經(jīng)看到@I,如果仔細檢查,可以更有效地將其稱為@EnableSystemFunctionsSetting。我們一次又一次地感到內(nèi)疚,當(dāng)您需要快速進行編碼時,標(biāo)準(zhǔn)往往會失效,而我們常常忘記暫停,并仔細考慮可能使用的最佳名稱。
下列代碼顯示了一個應(yīng)用程序。Cities$List存儲過程后面是第二個批處理(只是為了演示這種重命名的工作方式)。假設(shè)您想將@CityName重命名為@CityNameLike,使用戶清楚的知道他們可以傳遞LIKE表達式。
CREATE OR ALTER PROCEDURE Application.Cities$List @CityName nvarchar(50) = '%', @CityNameUpperCaseFlag bit = 0 AS DECLARE @CityNameValue nvarchar(50); SELECT Cities.CityID, CASE WHEN @CityNameUpperCaseFlag = 1 THEN UPPER(Cities.CityName) ELSE Cities.CityName END, Cities.Location FROM Application.Cities WHERE Cities.CityName LIKE @CityName; GO DECLARE @CityName int; SELECT @CityName GO
清單1
當(dāng)然,一種久經(jīng)考驗并幾乎是正確的方法是查找并替換(Ctrl + H)。但是,如果您不注意,可能會導(dǎo)致一些參數(shù)意外地重命名為@CityNameLikeUpperCaseFlag,并且在當(dāng)前對象的預(yù)期范圍之外重命名參數(shù)和變量。
圖1
使用SQL Prompt的重命名別名/變量重構(gòu),您可以更精確地執(zhí)行此任務(wù)。突出顯示@CityName的出現(xiàn)項,或?qū)⒐鈽?biāo)放在其上,它僅突出顯示當(dāng)前范圍內(nèi)@CityName的另一確切出現(xiàn)項。與查找和替換不同,它不會突出顯示任何不完全匹配的內(nèi)容,并且不會觸及第二批。
圖2
現(xiàn)在,右鍵單擊選擇重命名別名/變量,或按F2,然后在矩形框內(nèi)看到變量時,鍵入替換名稱CityNameLike,然后按Enter以“提交”更改名稱。如果輸入有誤,則可以使用單個“撤消”(Ctrl-Z)修復(fù)損壞。
接下來,您可能需要將Cities表的別名更改為較短的名稱,例如c。如果單擊的任何實例Cities,則SQL Prompt將突出顯示其他實例,但由于Cities不是別名,因此SQL Prompt的Rename Alias / Variable方法將不起作用。不過,這很容易解決。只需建立Cities一個別名,然后突出顯示它并點擊F2即可。
圖3
替換Cities為c,單擊Enter,新代碼將如下所示。
CREATE OR ALTER PROCEDURE Application.Cities$List @CityNameLike nvarchar(50) = '%', @CityNameUpperCaseFlag bit = 0 AS DECLARE @CityNameValue nvarchar(50); SELECT c.CityID, CASE WHEN @CityNameUpperCaseFlag = 1 THEN UPPER(c.CityName) ELSE c.CityName END, c.Location FROM Application.Cities AS c WHERE c.CityName LIKE @CityNameLike; GO
查找未使用的變量和參數(shù)
提示:在查詢窗口中,可以選擇突出顯示代碼塊,從SQL Prompt菜單中選擇“查找未使用的變量和參數(shù)”,或按(Ctrl B,Ctrl F),然后Prompt將在所有未使用的變量或參數(shù)下劃線。
在圖3中,您可以在下面看到一條綠色的波浪線@CityNameValue(和過程名稱,稍后再介紹)。這是SQL Prompt代碼分析功能,可提醒我們注意已聲明但從未使用過的變量。
圖4
即使您關(guān)閉了此功能(在使用非常大的腳本時,有時也會這樣做),您仍然可以使用“查找未使用的變量和參數(shù)”(Ctrl B + Ctrl F),并且在@CityNameValue變量下方會看到相同的綠色波浪線,和相同的消息。讓我們簡單地刪除該變量聲明,然后繼續(xù)進行此代碼的更多改進。
本教程內(nèi)容尚未完結(jié),后面將更新下半部分內(nèi)容,包括“使用代碼片段進行重構(gòu)”和“內(nèi)聯(lián)執(zhí)行:重構(gòu)以進行測試”,感興趣的朋友可以下載SQL Prompt試一下哦~
相關(guān)內(nèi)容推薦:
想要購買SQL Prompt正版授權(quán),或了解更多產(chǎn)品信息請點擊“咨詢在線客服”