您好,登錄后才能下訂單哦!
SQL Prompt不僅可以按照您希望的格式精確地格式化代碼,還可以幫助您快速切換到其他樣式,或者將異常應(yīng)用于不需要特定樣式的SQL腳本的某些部分。
SQL Prompt根據(jù)數(shù)據(jù)庫的對(duì)象名稱、語法和代碼片段自動(dòng)進(jìn)行檢索,為用戶提供合適的代碼選擇。自動(dòng)腳本設(shè)置使代碼簡(jiǎn)單易讀--當(dāng)開發(fā)者不大熟悉腳本時(shí)尤其有用。安裝即可使用,能大幅提高編碼效率。更多相關(guān)資訊,請(qǐng)上慧都網(wǎng)~
我使用SQL Prompt格式化我的代碼;在大多數(shù)情況下,我已經(jīng)定義了標(biāo)準(zhǔn)樣式,可以按照我喜歡的方式對(duì)代碼進(jìn)行布局。對(duì)于特定的任務(wù),我還有幾種替代樣式,例如比較同一代碼的兩個(gè)版本。
但是,有時(shí)候,標(biāo)準(zhǔn)格式對(duì)某些代碼或該代碼的某些部分不起作用。因此,像任何優(yōu)秀工具一樣,SQL Prompt不僅會(huì)為您格式化代碼,還會(huì)為您“取消格式化”,或者允許您有選擇地禁用某些部分的格式化。
取消格式化代碼
有時(shí),您只是希望代碼或代碼的某些部分采用非常精簡(jiǎn)的格式,通常只是因?yàn)楦袷交蟮陌姹菊加锰嘈胁⑶易兊秒y以閱讀。例如,考慮清單1中針對(duì)WideWorldImporters數(shù)據(jù)庫的簡(jiǎn)單查詢。
SELECT?* ??FROM???Sales.Customers
清單1
顯然,我不希望在生產(chǎn)應(yīng)用程序中使用*這樣的代碼,因此我使用Format SQL命令(或Ctrl K,Ctrl Y快捷鍵)應(yīng)用SQL Prompt自定義樣式。我還配置了Prompt Format?>?Styles選項(xiàng),以便某些格式化操作作為此命令的一部分運(yùn)行,包括Expand Wildcards和Insert Semicolons。我最終得到了一條長達(dá)32行的語句,如清單2所示。
SELECT?CustomerID, ?????????CustomerName, ?????????BillToCustomerID, ?????????CustomerCategoryID, ?????????BuyingGroupID, ?????????PrimaryContactPersonID, ?????????AlternateContactPersonID, ?????????DeliveryMethodID, ?????????DeliveryCityID, ?????????PostalCityID, ?????????CreditLimit, ?????????AccountOpenedDate, ?????????StandardDiscountPercentage, ?????????IsStatementSent, ?????????IsOnCreditHold, ?????????PaymentDays, ?????????PhoneNumber, ?????????FaxNumber, ?????????DeliveryRun, ?????????RunPosition, ?????????WebsiteURL, ?????????DeliveryAddressLine1, ?????????DeliveryAddressLine2, ?????????DeliveryPostalCode, ?????????DeliveryLocation, ?????????PostalAddressLine1, ?????????PostalAddressLine2, ?????????PostalPostalCode, ?????????LastEditedBy, ?????????ValidFrom, ?????????ValidTo ??FROM???Sales.Customers;
清單2
我希望SELECT列表采用更簡(jiǎn)潔的格式,為此,我可以使用一個(gè)有趣的動(dòng)作,稱為unformat。突出顯示清單2中的整個(gè)語句,然后從“操作”菜單中,開始輸入unformat,然后從過濾的列表中選擇它。
當(dāng)我第一次看到此命令時(shí),我設(shè)想在格式化代碼后,它就像一個(gè)“撤消”按鈕,但事實(shí)并非如此。它不會(huì)撤消您剛剛應(yīng)用的任何重構(gòu)操作的影響,但是會(huì)刪除所有空格字符,并用單個(gè)空格字符替換。結(jié)果是它從代碼中刪除了所有漂亮的格式,并將語句的每一位都放在一行上(盡管它可能顯示為自動(dòng)換行,具體取決于它出現(xiàn)的位置或您的SSMS設(shè)置)。
SELECT?Customers.CustomerID,?Customers.CustomerName,?Customers.BillToCustomerID,?Customers.CustomerCategoryID,?Customers.BuyingGroupID,?Customers.PrimaryContactPersonID,?Customers.AlternateContactPersonID,?Customers.DeliveryMethodID,?Customers.DeliveryCityID,?Customers.PostalCityID,?Customers.CreditLimit,?Customers.AccountOpenedDate,?Customers.StandardDiscountPercentage,?Customers.IsStatementSent,?Customers.IsOnCreditHold,?Customers.PaymentDays,?Customers.PhoneNumber,?Customers.FaxNumber,?Customers.DeliveryRun,?Customers.RunPosition,?Customers.WebsiteURL,?Customers.DeliveryAddressLine1,?Customers.DeliveryAddressLine2,?Customers.DeliveryPostalCode,?Customers.DeliveryLocation,?Customers.PostalAddressLine1,?Customers.PostalAddressLine2,?Customers.PostalPostalCode,?Customers.LastEditedBy,?Customers.ValidFrom,?Customers.ValidTo?FROM?Sales.Customers;
清單3
它將保留注釋周圍的空間,以確保雙連字符(--)注釋不會(huì)最終注釋掉所有剩余的代碼。您可以偶爾使用此技巧來防止提示使行長于換行(例如,當(dāng)您需要在線發(fā)布代碼時(shí))。
當(dāng)然,更常見的格式取消需要的不是完整的語句,而只是其中的一部分。幸運(yùn)的是,如果僅突出顯示注釋的文本,則unformat操作可在語句甚至注釋的任何部分上起作用。我處理過很多次的地方是在處理大量項(xiàng)目時(shí),通常是在使用“Copy as IN”子句功能時(shí)。
假設(shè)您的用戶要求一個(gè)查詢,該查詢將僅向他們顯示已訂購價(jià)值超過18000美元商品的那些客戶的詳細(xì)信息。清單4將為那些“高支出”客戶提供CustomerId值清單。
SELECT?DISTINCT?CustomerId--,Quantity?*?OrderLines.UnitPrice ??FROM???Sales.Orders ?????????????JOIN?Sales.OrderLines ?????????????????ON?OrderLines.OrderID?=?Orders.OrderID ??WHERE?Quantity?*?OrderLines.UnitPrice?>?18000;
清單4
在網(wǎng)格結(jié)果中,突出顯示該列,右鍵單擊并選擇Copy as IN子句,您可以快速生成用戶所需的查詢。但是,它幾乎有100行。
SELECT?* ??FROM???Sales.Customers ??WHERE??CustomerId ??IN ??( ??187, ??509, ??825, ??935, ??952, ??… ??839, ??1000, ??1005, ??1040 ??)
清單5
要將查詢發(fā)送給用戶,您可能不希望應(yīng)用標(biāo)準(zhǔn)格式,這可能會(huì)擴(kuò)展通配符,使查詢更長,并且根據(jù)格式樣式而使列表縮進(jìn)等等。在這種情況下,您可以僅突出顯示ID列表,應(yīng)用unformat操作,添加一些回車/換行符,查詢將如清單6所示。
SELECT?* ??FROM???Sales.Customers ??WHERE??CustomerId ??IN ??( ??187,?509,?825,?935,?952,?1003,?415,?529,?583,?1006,?1018,?1056,?96,?166,?201,?472,?489,?863,?999,?15,?32,?45, ??401,?899,?948,?988,?101,?527,?961,?26,?105,?427,?521,?813,?71,?413,?420,?480,?821,?37,?943,?950,?1010,?50,?102, ??170,?460,?492,?560,?578,?815,?16,?117,?405,?410,?533,?922,?949,?954,?498,?829,?1017,?42,?67,?418,?834,?854,?861, ??874,?911,?858,?892,?894,?437,?907,?912,?962,?14,?107,?524,?550,?930,?973,?40,?114,?431,?490,?807,?832,?839, ??1000,?1005,?1040 ??)
清單6
選擇性禁用格式
就像SQL Prompt在格式化代碼方面一樣出色,有時(shí),您只是不希望SQL Prompt接觸代碼的特定部分,因?yàn)楦袷交0宀荒芡耆珴M足您的要求。例如,假設(shè)您剛剛花了一些時(shí)間完全正確地為該部分代碼獲取了非標(biāo)準(zhǔn)格式,但現(xiàn)在想對(duì)其余的查詢?cè)俅螒?yīng)用Format SQL。
清單5的另一種解決方案是,如果您知道標(biāo)準(zhǔn)樣式將完全按照所需的格式設(shè)置列表項(xiàng)的格式,則僅是對(duì)語句的其余部分禁用格式設(shè)置,并且Prompt允許您輕松地做到這一點(diǎn)。只需突出顯示列表前面的代碼段(在清單5中),并對(duì)選定的文本操作應(yīng)用Disable Formatting。注釋將出現(xiàn)在代碼部分,告訴SQL Prompt在突出顯示的部分開始處禁用格式設(shè)置,并在結(jié)尾處重新啟用它。然后,只需突出顯示整個(gè)語句并應(yīng)用您選擇的樣式即可。
--?SQL?Prompt?formatting?off ??SELECT?* ??FROM???Sales.Customers ??WHERE??CustomerId ??IN ??--?SQL?Prompt?formatting?on ??????(?187,?509,?825,?935,?952,?1003,?415,?529,?583,?1006,?1018,?1056,?96,?166,? ????????201,?472,?489,?863,?999,?15,?32,?45,?401,?899,?948,?988,?101,?527,?961,? ????????26,?105,?427,?521,?813,?71,?413,?420,?480,?821,?37,?943,?950,?1010,?50,?102, ????????170,?460,?492,?560,?578,?815,?16,?117,?405,?410,?533,?922,?949,?954,?498,?829, ????????1017,?42,?67,?418,?834,?854,?861,?874,?911,?858,?892,?894,?437,?907,?912,?962, ????????14,?107,?524,?550,?930,?973,?40,?114,?431,?490,?807,?832,?839,?1000,?1005,?1040 ??????);
清單7
請(qǐng)注意,您也可以手動(dòng)鍵入格式控制注釋,一些間距、大小寫和結(jié)尾注釋不會(huì)阻止它們起作用。但是,該方法依賴于解析器看到雙連字符注釋(--)后跟SQL Prompt格式化Off(或On),因此,如果由于某種原因您不能或不使用雙連字符注釋,那么您將無法使用此控件方法。
在清單8中,我決定該SET子句應(yīng)該全部顯示在一行上,該WHERE子句中的最后兩個(gè)布爾值也應(yīng)該顯示在同一行上,因此我將unformat操作選擇性地應(yīng)用在了每個(gè)部分。
UPDATE?Sales.CustomerCategories ??SET?CustomerCategories.CustomerCategoryID?=?1,?CustomerCategories.CustomerCategoryName?=?N'New',?CustomerCategories.LastEditedBy?=?0 ??WHERE??CustomerCategories.CustomerCategoryID?=?1 ???AND?CustomerCategories.CustomerCategoryName?=?N'New'?AND?CustomerCategories.LastEditedBy?=?0;
清單8
然后,由于麻煩使用自定義格式,因此我希望它保持這種狀態(tài),所以我將“禁用”格式用于所選文本僅應(yīng)用于語句的那些部分。
UPDATE?Sales.CustomerCategories?--?A?code?comment ??--?SQL?Prompt?formatting?off ???SET?CustomerCategories.CustomerCategoryID?=?1,?CustomerCategories.CustomerCategoryName?=?N'New',?CustomerCategories.LastEditedBy?=?0 ??--?SQL?Prompt?formatting?on ??WHERE??CustomerCategories.CustomerCategoryID?=?1?--?Another?comment ??--?SQL?Prompt?formatting?off ???AND?CustomerCategories.CustomerCategoryName?=?N'New'?AND?CustomerCategories.LastEditedBy?=?0; ??--?SQL?Prompt?formatting?on
清單9
現(xiàn)在,如果我應(yīng)用Format SQL,它將不會(huì)影響代碼的那些注釋部分。但是,一個(gè)問題是該查詢中的注釋數(shù)量現(xiàn)在已失控,這使得該語句更難以閱讀。幸運(yùn)的是,格式控制注釋不必單獨(dú)顯示。但是,它必須是該行的第一條評(píng)論。在清單10中,第一個(gè)Off控件注釋仍然有效,但第二個(gè)注釋無效。
UPDATE?Sales.CustomerCategories?--?SQL?Prompt?formatting?off?–-?A?code?comment ??SET?CustomerCategories.CustomerCategoryID?=?1,?CustomerCategories.CustomerCategoryName?=?N'New',?CustomerCategories.LastEditedBy?=?0 ??--?SQL?Prompt?formatting?on ??WHERE?CustomerCategories.CustomerCategoryID?=?1?--?Another?comment?--?SQL?Prompt?formatting?off ????????AND?CustomerCategories.CustomerCategoryName?=?N'New' ????????AND?CustomerCategories.LastEditedBy?=?0; ??--?SQL?Prompt?formatting?on
清單10
總結(jié)
大多數(shù)時(shí)候,目標(biāo)是對(duì)所有代碼使用相同的標(biāo)準(zhǔn)格式。有時(shí),該格式模板無法完全滿足您的需求。為此,SQL Prompt具有可獨(dú)立于Format SQL命令應(yīng)用的操作,以取消格式化所選代碼或忽略該代碼的Format SQL命令。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。