SQL PROMPT5.3.4.1的一些設置選項


 

SQL PROMPT5.3.4.1的一些設置選項

我使用的是5.3.4.1版本

sql prompt這個工具安裝好之后就可以在SSMS里使用代碼提示功能

園子里非常多的文章:例如SQLSERVER開發利器XXXXXX

http://www.cnblogs.com/VAllen/archive/2012/09/08/SQLPrompt.html

http://www.cnblogs.com/keepfool/archive/2012/05/27/2519839.html

不過大家都是只提供個軟件下載、怎麽破解sql prompt還有簡單的使用方法,但是具體怎樣使用和設置真的沒有

昨天本人無聊研究了一下SQL PROMPT的設置,發現也有一些學問

大家想想,當我們在網上或者同事丟給我們一個sql代碼,我們會把代碼粘貼到SSMS里面看呢,但是每個人寫的代碼風格不一樣

從網上粘貼進來的代碼會有行號這些,特別代碼非常長的時候,格式化都不知道怎么格式化了,這個時候就需要sql prompt的代碼格式化功能了

使用sql prompt的代碼格式化功能很簡單,選中你要格式化的代碼或者你直接在查詢窗口按右鍵-》formate sql,

那么你選中的那部分代碼或者整個sql腳本都會自動formate,這樣就方便自己觀看了。

但是sql prompt默認的代碼格式化格式可能不適合大部分人,其實sql prompt提供了代碼格式化的選項設置讓大家去設置,只需要幾分鍾

個人感覺這些設置才是精粹,代碼提示功能只是一小部分而已,還有sql prompt實驗室提供的創新功能

redgate公司真的厲害,一個簡單sql prompt集成了這麽多功能,可能大家以為我幫redgate公司賣廣告,不過我相信大部分人都是使用破解的吧 o(∩_∩)o

-----------------------------------------------------華麗的分割線-------------------------------------------------------

說一下菜單中的選項,基本上菜單選項我很少用到,因為里面全部功能對我本人沒有用,或者對你們有用 呵呵

除了一個非常重要的選項:啟用/禁用代碼提示功能,SQL prompt共有兩處地方可以設置啟用/禁用代碼提示功能的開關

一個是這里,另一個是“option”-》Main-》behavior第一個選項就見到啦

---------------------------------------------------華麗的分割線-------------------------------------------------------------

下面對option菜單里面的選項逐個簡單介紹

-----------------------------------------------華麗的分割線--------------------------------------------------------------

首先是Main->behavior  軟件行為

輸入對象之后馬上顯示對象的定義

其實大家可以按照我的設置去設置,一般我用到的基本上都是大家用到的

------------------------------------------------華麗的分割線------------------------------------------------------------------

Suggestions->types of suggestion  輸入和代碼提示建議

解密已經加密了的對象還真的有用,比如我加密了一個存儲過程,那么我想看這個存儲過程是怎麽寫的,使用下面sql語句是看不出的

1 USE [pratice] 2 GO 3 EXEC [sys].[sp_helptext] @objname = N'dbo.creat_test_Encryption'
1 對象 'dbo.creat_test_Encryption' 的文本已加密。

但是使用sql prompt就可以看到存儲過程的內容

 

Suggestions->join conditions  連接條件

這個表連接的代碼提示設置,可以根據你輸入的是數據類型還是列名來進行提示,非常方便

例如我輸入的是數據類型,他就會彈出在這個表里符號你輸入的數據類型的字段

比如我輸入datetime類型

輸入列名

1 USE [GPOSDB] 2 GO 3 SELECT * FROM [dbo].[CT_FuelingData] AS a INNER JOIN [dbo].[CT_InhouseCard] AS b ON a.[VC_FD_Cardno]=b.[VC_IC_CardNO]

 

-----------------------------------------------------華麗的分割線---------------------------------------------------------

Inserted Code->Objects&statements  對象和語句

Inserted Code->Qualification 限定名

 

像我在圖片中說到那樣,不知道為什么你輸入表名. ,代碼提示還是會顯示出具有相同列名的表出來

不過這個地方還是有好處的,不如你查一個視圖,但是不知道某個視圖里的某列的意思

我舉個簡單的例子吧

比如我想知道 [sys].[sysprotects]這個系統視圖中的uid列對應是哪個用戶或角色,但是我不知道哪個表或者視圖包含有uid這個列的

那么我可以輸入下面語句就會顯示包括uid列的表或者視圖,雖然會顯示多個表都包含這個列,但是你想一下

 [sys].[sysprotects]這個視圖會跟用戶、權限的表有關,那么很自然就會想到sysuser這個系統視圖

輸入下面的語句關聯看一下就知道uid對應[sysuser]視圖里的哪個用戶了

1 SELECT a.*, b.[name] 2 FROM [sys].[sysprotects] AS a 3 LEFT JOIN [sys].[sysusers] AS b ON a.[uid] = b.[uid] 4 ORDER BY a.[id]

 Inserted Code->Aliases 別名

  Inserted Code->Special characters 特殊符號

-----------------------------------------------------華麗的分割線------------------------------------------------------------------------

 到代碼格式化了!!

注意,在Formate這個選項下面的所有設置,都要在查詢編輯器里選中需要格式化的代碼 然后右鍵-》formate sql 才看到效果的,

不是你輸入代碼之后sqlprompt馬上會自動幫你formate,是手動的喔。

 Formate->Styles 風格

 

 這里Styles應該是給你看的,反正我是編輯不了,可以導出XML格式的style文件,但是我也不知道怎么編輯,抱歉抱歉

大家E文比較好的話可以看redgate的官方網站解釋,但是我看了里面好像沒有說到怎麽編輯,太杯具了~

網站鏈接:https://documentation.red-gate.com/display/SP53/Options+for+formatting+your+code

導出的style文件

 1 <?xml version="1.0" encoding="utf-16" standalone="yes"?>  2 <!---->  3 <LayoutOptions version="1" type="LayoutOptions">  4 <ReservedWordsCasing>1</ReservedWordsCasing>  5 <BuiltInFunctionCasing>1</BuiltInFunctionCasing>  6 <BuiltInDataTypeCasing>1</BuiltInDataTypeCasing>  7 <DelimitIdentifiers>False</DelimitIdentifiers>  8 <IndentationAmount>4</IndentationAmount>  9 <UseTabs>False</UseTabs> 10 <ReformatExpressions>True</ReformatExpressions> 11 <FirstColumnOnNewLine>False</FirstColumnOnNewLine> 12 <CommasAtStart>False</CommasAtStart> 13 <MultilineSpacesAfterCommas>False</MultilineSpacesAfterCommas> 14 <MultilineSpacesBeforeCommas>True</MultilineSpacesBeforeCommas> 15 <MultilineAlignCommasWithStatement>True</MultilineAlignCommasWithStatement> 16 <OperatorsOnNewline>True</OperatorsOnNewline> 17 <OperatorsAtStart>True</OperatorsAtStart> 18 <IndentBeginToken>True</IndentBeginToken> 19 <IndentWithExpressionBrackets>True</IndentWithExpressionBrackets> 20 <IndentWithParameterBrackets>True</IndentWithParameterBrackets> 21 <IndentWithQueryBrackets>True</IndentWithQueryBrackets> 22 <CloseBracketsOnNewLine>True</CloseBracketsOnNewLine> 23 <OpenBracketsOnNewLine>False</OpenBracketsOnNewLine> 24 <Wrap>True</Wrap> 25 <WrapWidth>78</WrapWidth> 26 <ShortLength>15</ShortLength> 27 <CreateBracketsAtStartOfLines>False</CreateBracketsAtStartOfLines> 28 <ParameterBracketOnNewline>True</ParameterBracketOnNewline> 29 <CloseParameterBracketsOnNewLine>True</CloseParameterBracketsOnNewLine> 30 <CompactShortStatements>False</CompactShortStatements> 31 <SinglelineSpacesAfterCommas>True</SinglelineSpacesAfterCommas> 32 <SinglelineSpacesBeforeCommas>False</SinglelineSpacesBeforeCommas> 33 <SpacesAroundOperators>True</SpacesAroundOperators> 34 <SpacesAroundComparisons>True</SpacesAroundComparisons> 35 <FirstParameterDefinitionOnNewLine>True</FirstParameterDefinitionOnNewLine> 36 <SpacesAfterBrackets>True</SpacesAfterBrackets> 37 <LayoutSelectStatements>True</LayoutSelectStatements> 38 <LayoutCreateStatements>True</LayoutCreateStatements> 39 <QueryNewlineAfterOpenBracket>False</QueryNewlineAfterOpenBracket> 40 <QueryNewlineBeforeCloseBracket>True</QueryNewlineBeforeCloseBracket> 41 <JoinConditionsOnNewline>False</JoinConditionsOnNewline> 42 <AlignConditionsWithJoins>False</AlignConditionsWithJoins> 43 <AlignJoinsWithFrom>False</AlignJoinsWithFrom> 44 <IndentByKeywordWidth>False</IndentByKeywordWidth> 45 <ColumnsOnSingleLine>False</ColumnsOnSingleLine> 46 <DoNotIndentProcedureContents>False</DoNotIndentProcedureContents> 47 <ExecuteParametersOnSingleLine>True</ExecuteParametersOnSingleLine> 48 <UseSpacesInsteadOfTabs>False</UseSpacesInsteadOfTabs> 49 <IndentSelectSubclauses>False</IndentSelectSubclauses> 50 </LayoutOptions>

 Formate->Case 大小寫

  Formate->Schema statements 結構語句

 

 Formate->Data statements 數據語句

 Formate->Expressions 表達式

 Formate->Commas&parentheses 逗號和雙引號

Formate->Tabs&wrapping 自動換行和tabs鍵縮進量

 

經過以上設置,我用formate sql功能格式化了一下今天同事給我的一個sql腳本,還算比較舒服的格式化了之后

 1 /*  2 @StartDate  3 @EndDate  4 */  5 ALTER PROCEDURE [dbo].[CT_FuelingData_ICCardGatherReport]  6 (  7 @StartDate VARCHAR(50) ,  8 @EndDate VARCHAR(50)  9 ) 10 AS 11 BEGIN 12 DECLARE @i INT 13 DECLARE @totalcount INT 14 DECLARE @tmpOilTypeName VARCHAR(50) 15 DECLARE @tmpInAmount DECIMAL 16 DECLARE @tmpOutAmount DECIMAL 17 TRUNCATE TABLE Rep_ICFueling 18 CREATE TABLE #TmpOilTypeName 19  ( 20 IndexId INT IDENTITY(1, 1) 21 NOT NULL , 22 VC_OT_OilTypeName VARCHAR(50) 23  ) 24 INSERT INTO #TmpOilTypeName ( VC_OT_OilTypeName ) 25 SELECT VC_OT_OilTypeName 26 FROM DP_OilType 27 ORDER BY VC_OT_OilTypeName ASC 28 SET @totalcount = @@rowcount 29 SET @i = 1 30 WHILE ( @i <= @totalcount ) 31 BEGIN 32 SET @tmpInAmount = NULL 33 SET @tmpOutAmount = NULL 34 SELECT @tmpOilTypeName = VC_OT_OilTypeName 35 FROM #TmpOilTypeName 36 WHERE IndexId = @i 37 SELECT @tmpInAmount = SUM(ISNULL(a.DE_FD_Amount, 0)) 38 FROM CT_FuelingData a , 39  CT_OuterCard b 40 WHERE ( a.I_FD_TypeCode <> 1 ) AND ( a.I_FD_TypeCode <> 5 ) AND ( b.VC_OC_Company = '' ) AND ( D_FD_DateTime BETWEEN @StartDate AND @EndDate ) AND a.VC_FD_Cardno = b.VC_OC_Cardno AND a.VC_FD_OilType = @tmpOilTypeName 41 GROUP BY a.VC_FD_OilType 42 SELECT @tmpOutAmount = SUM(ISNULL(a.DE_FD_Amount, 0)) 43 FROM CT_FuelingData a , 44  CT_OuterCard b 45 WHERE ( a.I_FD_TypeCode <> 1 ) AND ( a.I_FD_TypeCode <> 5 ) AND ( b.VC_OC_Company <> '' ) AND ( D_FD_DateTime BETWEEN @StartDate AND @EndDate ) AND a.VC_FD_Cardno = b.VC_OC_Cardno AND a.VC_FD_OilType = @tmpOilTypeName 46 GROUP BY a.VC_FD_OilType 47 INSERT INTO Rep_ICFueling ( OilTypeStr, InAmount, OutAmount ) 48 VALUES ( @tmpOilTypeName, ISNULL(@tmpInAmount, 0), 49 ISNULL(@tmpOutAmount, 0) ) 50 SET @i = @i + 1 51 END 52 53 SELECT * 54 FROM Rep_ICFueling 55 --select * from #TmpOilTypeName 56 DROP TABLE #TmpOilTypeName 57 END

 

----------------------------------------------------華麗的分割線--------------------------------------------------------------

至此,sql prompt的格式設置完了,大家可以格式化一下你們的代碼試一下符合自己的要求不

最后說一下實驗室里的一個自動刷新功能,這個自動刷新功能對於多人修改同一個數據庫腳本,例如同一個存儲過程,函數

是很有用的。應該大家都有用版本管理軟件吧,例如:Visual SourceSafe 就可以管理sqlserver數據庫里的一個庫里的所有sql腳本

不多說了,看一下這個刷新功能,先啟用這個功能啦第一步

然后在SSMS里新建兩個查詢窗口,第一個查詢窗口在tempdb數據庫里新建一個表,然后在第二個查詢窗口就可以馬上看到新建的表

 

寫完了,要睡了,祝大家好夢!! 

--------------------------------------------------------------------------------------------------------------

2013-8-27 補充:

發覺格式化TSQL代碼的時候還可以指出TSQL代碼的語法錯誤,個人覺得比SSMS的分析代碼語法好用多了

當你點擊“Format SQL”按鈕的時候,如果您的TSQL代碼有語法錯誤,就會以下划的紅色波浪線標出來,非常方便

SQL PROMPT也根據SQLSERVER版本來開發的

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM