2011-11-10 32 views
2

我正在逆向工程一個巨大的存儲過程。它裏面有很多BEGIN ENDs,並不是所有的縮進都正確,層次也很深,而且我有時間找到哪些BEGIN END對彼此匹配。如何在複雜的SQL Server查詢中查找匹配的BEGIN END對?

有沒有一種簡單的方法來找出哪些對彼此匹配。我知道在Visual Studio中,你可以使用ctr +]從開始支架跳到右側支架,而在SSMS 2008中也是這樣。但是我正在使用2005.

任何想法?

+0

我可以推薦你用一個工具來格式化SQL代碼,例如:http://www.dpriver.com/pp/sqlformat.htm – Lamak

+0

@Lamak:謝謝,但這並沒有真正解決我的問題。整潔的工具,但。 – richard

回答

5

在SQL Server 2005中,ctrl +]仍然適用於},它只適用於BEGIN END。 SQL Server 2005不區分註釋括號和未註釋的括號,所以我的解決方案是用BEGIN/*{*/替換所有BEGIN s,並用END/*}*/替換所有END s。

所以我有這樣的事情:

BEGIN/*{*/ 

    BEGIN/*{*/ 

    END/*}*/ 

END/*}*/ 

有了,我能跳來回配對BEGINEND

請注意BEGIN TRANSACTION命令,但不希望它們包含在替換中。

2

我會用一個不錯的文本編輯器(如VIM),以取代各自開始{}末,就像這樣:

:%s/\<BEGIN\>/{/g 
:%s/\<END\>/}/g 

注意,\<\>是正則表達式元字符,以確保你不」除了完整的單詞以外,不匹配任何內容

然後在正常模式下,將光標放在感興趣的大括號上,並點擊%鍵。 Vim會帶你到相應的支撐。

完成重新格式化以達到您的滿意度時,請將大括號替換爲其原始關鍵字。

+0

這是一個該死的好主意。謝謝。 – richard