SQL — Урок 16. Хранимые процедуры. Часть 2.
То получим нечто такое же нечитабельное, как и при использовании операторов SHOW. Поэтому мы будем создавать запросы с условиями. Например, если мы создадим вот такой запрос:
То получим имена всех процедур всех баз данных, имеющихся на сервере. Нас, например, на данный момент интересуют только процедуры базы данных shop, поэтому изменим запрос:
Вот теперь мы получили то, что хотели:
Если же мы хотим посмотреть только тело конкретной процедуры (т.е. от begin до end), то мы напишем такой запрос:
И увидим вполне читабельный вариант:
- db — имя БД, в которую сохранена процедура.
- name — имя процедуры.
- param_list — список параметров процедуры.
- body — тело процедуры.
- comment — комментарий к хранимой процедуре.
Комментарии вещь крайне необходимая, ведь через какое-то время мы может забыть, что делает та или иная процедура. Конечно, по ее коду можно восстановить нашу память, но зачем? Гораздо проще сразу при создании процедуры указать, что она делает, и тогда, даже по прошествии долгого времени, обратившись к комментариям, мы сразу вспомним, зачем эта процедура создавалась.
Создавать комментарии крайне просто. Для этого сразу после списка параметров, но еще до начала тела хранимой процедуры указываем ключевое слово COMMENT ‘здесь комментарий’ . Давайте удалим нашу процедуру sum_vendor и создадим новую, с комментарием:
А теперь сделаем запрос к комментарию процедуры:
Вообще-то, чтобы добавить комментарий, вовсе не обязательно было удалять старую процедуру. Можно было отредактировать имеющуюся хранимую процедуру с помощью оператора ALTER PROCEDURE . Давайте посмотрим, как это сделать, на примере процедуры ins_cust из прошлого урока. Эта процедура вводит информацию о новом покупателе в таблицу Покупатели (customers). Давайте добавим комментарий к этой процедуре:
И сделаем запрос к комментарию, чтобы проверить:
В нашей базе данных всего две процедуры, и комментарии к ним кажутся излишними. Не ленитесь, обязательно пишите комментарии. Представьте, что в нашей базе данных десятки или сотни процедур. Сделав нужный запрос, вы без труда узнаете, какие процедуры есть и что они делают и поймете, что комментарии — это не излишества, а экономия вашего времени в будущем. Кстати, а вот и сам запрос:
Ну вот, теперь мы умеем извлекать любую информацию о наших процедурах, что позволит нам ничего не забыть и не запутаться.
Научись программировать на Python прямо сейчас!
Если этот сайт оказался вам полезен, пожалуйста, посмотрите другие наши статьи и разделы.
Как просмотреть код хранимой процедуры в SQL Server Management Studio
Я новичок в SQL Server. Я вошел в свою базу данных через SQL Server Management Studio.
У меня есть список хранимых процедур. Как просмотреть код хранимой процедуры?
Щелчок правой кнопкой мыши по хранимой процедуре не имеет такой опции, как view contents of stored procedure .
10 ответов
Щелкните хранимую процедуру правой кнопкой мыши и выберите Сохраненная процедура сценария как | СОЗДАТЬ В | Новое окно редактора запросов / буфер обмена / файл .
Вы также можете выполнить Изменить , щелкнув хранимую процедуру правой кнопкой мыши.
Для одновременного использования нескольких процедур щелкните папку Хранимые процедуры , нажмите F7 , чтобы открыть панель сведений об обозревателе объектов, удерживайте Ctrl и щелкните, чтобы выбрать все необходимые, а затем щелкните правой кнопкой мыши и выберите Сохраненная процедура сценария как | СОЗДАТЬ в .
Это лучший способ:
Если у вас нет разрешения на «Изменить», вы можете установить бесплатный инструмент под названием «Поиск SQL» (от Redgate). Я использую его для поиска ключевых слов, которые, как я знаю, будут в SP, и он возвращает предварительный просмотр кода SP с выделенными ключевыми словами.
Гениально! Затем я копирую этот код в свой собственный SP.
Вы можете просмотреть весь код объектов, хранящийся в базе данных, с помощью этого запроса:
Exec sp_helptext ‘your_sp_name’ — не забывайте кавычки
В Management Studio по умолчанию результаты отображаются в виде сетки. Если вы хотите увидеть его в текстовом виде, перейдите по ссылке:
Запрос -> Результаты в -> Результаты в текст
Или CTRL + T, а затем «Выполнить».
Другие ответы, которые рекомендуют использовать обозреватель объектов и скрипт хранимой процедуры в новом окне редактора запросов, а также другие запросы, являются надежными вариантами.
Мне лично нравится использовать приведенный ниже запрос для получения определения / кода хранимой процедуры в одной строке (я использую Microsoft SQL Server 2014, но похоже, что это должно работать с SQL Server 2008 и выше)
Просмотр определения хранимой процедуры
В этой статье объясняется, как просмотреть определение процедуры в обозревателе объектов, с помощью системной хранимой процедуры, системной функции или представления каталога объектов в Редакторе запросов.
Перед началом работы Безопасность
Просмотр определения хранимой процедуры с помощью среды SQL Server Management Studio, Transact-SQL
Перед началом
безопасность
Permissions
Системная хранимая процедура: sp_helptext
Необходимо быть членом роли public. Определения системных объектов видимы для всех. Определения пользовательских объектов видимы владельцу объекта и получателям любого из следующих разрешений: ALTER, CONTROL, TAKE OWNERSHIP и VIEW DEFINITION.
Системная функция: OBJECT_DEFINITION
Определения системных объектов видимы для всех. Определения пользовательских объектов видимы владельцу объекта и получателям любого из следующих разрешений: ALTER, CONTROL, TAKE OWNERSHIP и VIEW DEFINITION. Эти разрешения неявно предоставляются членам предопределенных ролей базы данных db_owner, db_ddladmin и db_securityadmin .
Представление каталога объектов: sys.sql_modules
Видимость метаданных в представлениях каталогов ограничивается защищаемыми объектами, которыми пользователь владеет или на которые ему были предоставлены разрешения. Дополнительные сведения см. в разделе Metadata Visibility Configuration.
Azure Synapse Analytics не поддерживает системную хранимую процедуру sp_helptext . Вместо нее используйте представление каталога объектов sys.sql_modules . Примеры приведены далее в этой статье.
Просмотр определения хранимой процедуры
Можно использовать один из следующих способов:
Использование среды SQL Server Management Studio
Просмотр определения процедуры средствами обозревателя объектов
В обозревателе объектов подключитесь к экземпляру Компонент Database Engine и разверните его.
Последовательно разверните узел Базы данных, базу данных, которой принадлежит процедура, и узел Программирование.
Разверните раздел Хранимые процедуры, щелкните процедуру правой кнопкой мыши, нажмите Создать скрипт для хранимой процедуры, а затем выберите один из следующих пунктов: Используя CREATE, Используя ALTER или Используя DROP и CREATE.
Выберите New Query Editor Window (Окно редактирования нового запроса). При этом отобразится определение процедуры.
Использование Transact-SQL
Просмотр определения процедуры в редакторе запросов
Системная хранимая процедура: sp_helptext
В обозревателе объектов установите соединение с экземпляром компонента Компонент Database Engine.
На панели инструментов нажмите Создать запрос.
В окне запроса введите следующую инструкцию, которая использует системную хранимую процедуру sp_helptext . Измените имя базы данных и имя хранимой процедуры для ссылки на нужную базу данных и хранимую процедуру.
Системная функция: OBJECT_DEFINITION
В обозревателе объектов установите соединение с экземпляром компонента Компонент Database Engine.
На панели инструментов нажмите Создать запрос.
В окне запроса введите следующие инструкции, которые используют системную функцию OBJECT_DEFINITION . Измените имя базы данных и имя хранимой процедуры для ссылки на нужную базу данных и хранимую процедуру.
Представление каталога объектов: sys.sql_modules
В обозревателе объектов установите соединение с экземпляром компонента Компонент Database Engine.