SQL語法提示工具SQL Prompt使用教程:使用SQL Prompt代碼段執(zhí)行重復(fù)任務(wù)(上)
SQL Prompt根據(jù)數(shù)據(jù)庫的對象名稱、語法和代碼片段自動(dòng)進(jìn)行檢索,為用戶提供合適的代碼選擇。自動(dòng)腳本設(shè)置使代碼簡單易讀--當(dāng)開發(fā)者不大熟悉腳本時(shí)尤其有用。SQL Prompt安裝即可使用,能大幅提高編碼效率。此外,用戶還可根據(jù)需要進(jìn)行自定義,使之以預(yù)想的方式工作。
曾經(jīng)有一段時(shí)間,我認(rèn)為我不需要IntelliSense。畢竟,我可以在睡眠中編寫T-SQL,完全了解大多數(shù)常用語法,而更復(fù)雜或不可思議的功能僅是快速的網(wǎng)絡(luò)搜索。但是,SQL Prompt改變了主意。我開始使用其代碼完成建議來建議連接條件,然后幫助填寫GROUP BY子句,因此我對該工具的使用有所增加,直到我計(jì)算出現(xiàn)在至少每天可以節(jié)省數(shù)十分鐘。
直到幾周前,我都不認(rèn)為我也不需要SQL Prompt代碼段。但是,當(dāng)我終于有時(shí)間了解它們的工作原理時(shí),我意識到它們不只是為基本命令提供SQL文本片段的幫助者。一些簡單的自定義片段可以節(jié)省很多我重復(fù)的任務(wù),例如:
- 插入重復(fù)的文本,例如注釋塊或分隔符
- 插入每次都幾乎相同的常用代碼塊
- 運(yùn)行實(shí)用程序代碼(甚至是大批量)
在弄清楚這一點(diǎn)之后,我發(fā)現(xiàn)自己在創(chuàng)建和使用代碼片段來完成許多我經(jīng)常做的重復(fù)性任務(wù)。
什么是代碼段?
如果您未安裝SQL Prompt,則可以在此處免費(fèi)獲得試用版。如文檔中所述,代碼段為:“任何預(yù)定義的代碼塊,您都可以在當(dāng)前光標(biāo)位置或當(dāng)前選定的SQL文本周圍插入查詢窗格中”。
摘錄這個(gè)詞對我來說意味著“小”。從“SQL Prompt”菜單中打開“代碼片段管理器”,您將看到內(nèi)置代碼片段符合以下要求:
每個(gè)預(yù)定義的代碼段都是小的代碼片段,例如用于創(chuàng)建或修改常見對象類型的代碼片段,您可以通過幾次擊鍵調(diào)用這些代碼片段,而不必鍵入整個(gè)片段。因此,例如,鍵入ct會調(diào)用“創(chuàng)建表”代碼段,并插入CREATE TABLE語句的基本內(nèi)容,而“ j ”代碼段則可以節(jié)省繁瑣的鍵入任務(wù)JOIN。我不太用這些內(nèi)置片段。也許他們會在這里和那里為我省去一些按鍵操作,但是記住我所需要的代碼片段的初始性可能會使我花費(fèi)更長的時(shí)間。
但是,一旦我開始理解提示片段的工作原理,我意識到我可以構(gòu)建自己的自定義片段,并且它們不一定需要小而簡單(盡管其中有些是)。這樣做可以消除很多重復(fù),特別是在執(zhí)行頻繁的任務(wù)(例如添加注釋標(biāo)題、創(chuàng)建表或執(zhí)行常用的元數(shù)據(jù)查詢)時(shí)。他們對占位符(參數(shù)或多或少)的支持意味著我可以根據(jù)需要非??焖俚靥鎿Q各種對象的正確名稱或查詢參數(shù)的值。
分享片段隨著摘要的復(fù)雜性增加,您不妨與其他人分享。您可以將代碼段文件夾重新定位到共享驅(qū)動(dòng)器,如上例所示。我建議您使用文件共享系統(tǒng)(例如OneDrive或Dropbox)或源控制系統(tǒng),以幫助防止一個(gè)團(tuán)隊(duì)成員以不可恢復(fù)的方式刪除或修改代碼段。
請注意,SSMS擁有自己的代碼片段管理器,其中還包含用于構(gòu)建常見對象類型的語法示例以及對模板的支持,了解SQL Prompt的代碼片段的不同之處及其原因非常有用。
對我而言,最大的區(qū)別之一就是可用性。通過在查詢編輯器中單擊鼠標(biāo)右鍵可以調(diào)用SSMS代碼段,但是SQL Prompt的代碼段的工作方式與其他任何IntelliSense幫助程序一樣,使它們更加自然地工作。
用于插入重復(fù)文本的簡單代碼段
即使是非常簡單的代碼段,也可以從少量但頻繁且重復(fù)的任務(wù)中刪除令人驚訝的乏味。我很少回顧一段代碼而不會感到需要做些小改進(jìn)的沖動(dòng),例如通過添加標(biāo)題注釋來解釋例程的意圖,以及一組破折號來幫助將一些較大的代碼分成邏輯部分。
通常,我只是第一次輸入注釋標(biāo)題,然后使用復(fù)制和粘貼。相反,我現(xiàn)在從以下代碼創(chuàng)建了一個(gè)Prompt代碼段:
/****************************************************** $CommentHere$ ******************************************************/ $CURSOR$
$字符表示的占位符,是參數(shù)值的替換點(diǎn)。$CommentHere$是一個(gè)自定義占位符,我可以在其中輸入注釋標(biāo)題的文本,并且$CURSOR$是SQL Prompt的內(nèi)置占位符之一,在這種情況下,它僅指定調(diào)用該代碼段并填寫了$CommentHere$占位符。其他內(nèi)置占位符將執(zhí)行特定操作,例如插入當(dāng)前日期($DATE$)或連接的數(shù)據(jù)庫的名稱($DBNAME$)。
您可以通過打開我之前顯示的代碼段管理器從頭開始創(chuàng)建代碼段,但是要直接從此代碼創(chuàng)建代碼段,只需在SSMS查詢窗格中突出顯示該代碼段,然后右鍵單擊并從右鍵單擊上下文中選擇創(chuàng)建代碼段。菜單(或從“操作”菜單,即您可以在左上角看到的下拉圖標(biāo))中:
這會將代碼捕獲到一個(gè)代碼段中,自動(dòng)檢測任何占位符,并為其分配一個(gè)默認(rèn)名稱,在我的情況下為cc。我不喜歡這些簡短的縮寫,而是立即將其更改為更長但更易記的名稱,并添加了說明:
如您所見,“創(chuàng)建新代碼段”對話框的一部分跟蹤這些自定義占位符,您可以為每個(gè)自定義占位符提供默認(rèn)值(例如,對于LIKE表達(dá)式占位符,您可以使用默認(rèn)值'%')。
單擊“保存”,然后在“選項(xiàng)”對話框上單擊“確定”,然后轉(zhuǎn)到SSMS。鍵入commentsection一詞,并在鍵入時(shí)看到以下內(nèi)容:
完成鍵入注釋部分的操作,或在菜單中選擇它,然后按Enter調(diào)用該代碼段,它將代碼片段注入到光標(biāo)所在位置的查詢窗格中?,F(xiàn)在,將選擇$CommentHere$參數(shù),您可以開始鍵入。如果代碼中有多個(gè)具有相同名稱的參數(shù),則在您開始輸入其中一個(gè)參數(shù)時(shí),它們都會收到相同的文本。
按下Enter鍵后,您的注釋文本將被保存,并且光標(biāo)將移至$CURSOR$占位符定義的位置。如果您需要輸入多行注釋標(biāo)題,則只需使用Shift-Enter而不是Enter。
您可以輕松擴(kuò)展此示例,以為整個(gè)團(tuán)隊(duì)創(chuàng)建自定義評論標(biāo)頭。例如,您可以使用以下模板來標(biāo)準(zhǔn)化文件頭:
名稱:teamfileheader說明:LD-在每個(gè)SQL文件的開頭使用此標(biāo)頭
代碼段:
/**************************************************** Author: $USER$ Date: $DATE$ Purpose: $ScriptPurpose$ *****************************************************/ $CURSOR$
調(diào)用此代碼段后,將使用登錄人員的用戶名,本地格式的日期(無時(shí)間)填寫作者,您將能夠描述腳本的用途。
本教程內(nèi)容較多,分為上下兩個(gè)部分,后續(xù)內(nèi)容不斷更新中,敬請期待~感興趣的朋友可以下載SQL Prompt試用版免費(fèi)體驗(yàn)!