#sql #sql-server-2005
#sql #sql-server-2005
Вопрос:
Я занимаюсь обратным проектированием гигантской хранимой процедуры. В нем множество начальных окончаний, не все с правильным отступом, много уровней глубины, и мне чертовски сложно найти, какие пары BEGIN END совпадают друг с другом.
Есть ли простой способ выяснить, какие пары соответствуют друг другу. Я знаю, что в Visual Studio вы можете перейти от открывающей скобки к закрывающей скобке с помощью ctr ] и то же самое в SSMS 2008. Но я использую 2005.
Есть идеи?
Комментарии:
1. Я могу порекомендовать вам отформатировать SQL-код с помощью такого инструмента, как: dpriver.com/pp/sqlformat.htm
2. @Lamak: Спасибо, но на самом деле это не решило мою проблему. Отличный инструмент, хотя.
Ответ №1:
В SQL Server 2005 ctrl ] все еще работает для }
, это просто не работает для BEGIN END
. SQL Server 2005 не различает закомментированные скобки и скобки без комментариев, поэтому моим решением было заменить все BEGIN
s на BEGIN/*{*/
, а все END
s на END/*}*/
.
Итак, у меня было что-то вроде этого:
BEGIN/*{*/
BEGIN/*{*/
END/*}*/
END/*}*/
Благодаря этому я смог переходить назад и вперед к парным BEGIN
и END
.
Обратите внимание на BEGIN TRANSACTION
команды, однако вы не хотите, чтобы они включались в replace.
Комментарии:
1. Отличная идея. Кроме того, убедитесь, что вы проверили, не является ли конец частью «СЛУЧАЯ, КОГДА». Если вы используете Azure Data Studio или аналогичный, ярлык для перемещения по скобкам — Ctrl Shift
Ответ №2:
Я бы использовал хороший текстовый редактор (например, Vim), чтобы заменить каждое НАЧАЛО на {
и КОНЕЦ на }
, вот так:
:%s/<BEGIN>/{/g
:%s/<END>/}/g
Обратите внимание, <
и >
являются метасимволами регулярных выражений, чтобы гарантировать, что вы не будете сопоставлять ничего, кроме полных слов.
Затем в обычном режиме наведите курсор на интересующий символ в виде фигурной скобки и нажмите %
клавишу. Vim приведет вас к соответствующей фигурной скобке.
Когда вы закончите переформатирование по своему усмотрению, замените символы фигурной скобки на их исходные ключевые слова.