2011-11-10 7 views
2

私は巨大なストアドプロシージャをリバースエンジニアリングしています。 BEGIN ENDの数はたくさんありますが、すべてが正しくインデントされているわけではありません。多くのレベルが深く、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では、コメントアウトされた角かっことコメント化されていない角かっこは区別されないため、すべてBEGINBEGIN/*{*/に、ENDをすべてEND/*}*/に置き換えて解決しました。私はペアBEGINENDに前後にジャンプすることができたことで

BEGIN/*{*/ 

    BEGIN/*{*/ 

    END/*}*/ 

END/*}*/ 

だから私はこのような何かを持っていました。

BEGIN TRANSACTIONコマンドを参照してください。ただし、それらを置換に含める必要はありません。

2

私は、それぞれが}{とENDで始まる交換する(Vimのような)良いテキストエディタを使用するには、そのよう:

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

注意、\<\>は、「あなたはドン確保するための正規表現のメタ文字です完全な単語以外は一致しません。

通常モードで、目的のブレース文字の上にカーソルを置き、%キーを押します。 Vimはマッチする中括弧に移動します。

満足のいくように再フォーマットしたら、中括弧文字を元のキーワードに置き換えてください。

+0

それはまあ良い考えです。ありがとう。 – richard

関連する問題