Skip to content

Обзор оператора sp_helptext

Пересказ статьи Nisarg Upadhyay. An overview of the sp_helptext statement


В этой статье вы узнаете об операторе (хранимой процедуре) sp_helptext. Я покажу различные примеры его использования и пару альтернатив.

Оператор sp_helptext используется для просмотра определения следующих объектов базы данных.


Команда имеет следующий синтаксис:

exec sp_helptext [ @obj_name = ] 'Object_Name' , [ @column_name = ] computed_column_name

Здесь

  1. @obj_name: Задает валидное имя объекта базы данных. Объектами могут быть хранимая процедура, функция, вычисляемые столбцы или триггеры. Если вы укажете квалифицированное имя объекта (имя_схемы.имя_объекта), то требуется заключить его в кавычки. Этот параметр не имеет значения по умолчанию.

  2. @column_name: Задает имя вычисляемого столбца. Оператор возвращает запрос T-SQL, который используется для создания вычисляемого столбца.


При выполнении оператора sp_helptext определение объекта выводится в нескольких строках, каждая строка содержит 255 символов определения T-SQL. Определение объектов базы данных находится в столбце definition динамического представления sys.sql_modules.

Давайте теперь разберем синтаксис на нескольких примерах. Я использую базу данных Wideworldimportors.

Пример 1: Получение определения хранимой процедуры


Для получения определения хранимой процедуры Website.ChangePassword выполняется следующий запрос:

use WideWorldImporters
Go
exec sp_helptext 'Website.ChangePassword'



Пример 2: Получение определения пользовательской функции


Пользовательская скалярная функция с именем [Website].[CalculateCustomerPrice] была создана в базе данных wideworldimportors. Для вывода определения [Website].[CalculateCustomerPrice] выполните следующий запрос. Я сократил вывод на скриншоте, поскольку код T-SQL очень длинный.

use WideWorldImporters
Go
exec sp_helptext 'Website.CalculateCustomerPrice'



Пример 3: Получение определения представления


Представление с именем [Website].[Suppliers] было создано в базе данных wideworldimportors. Для вывода определения [Website].[Suppliers] выполните следующий запрос.

use WideWorldImporters
Go
exec sp_helptext 'Website.Suppliers'



Пример 4: Получение определения вычисляемого столбца


Вычисляемый столбец с именем SearchName был создан в таблице Application.People. Для получения определения вычисляемого столбца выполните следующий запрос.

use WideWorldImporters
Go
exec sp_helptext 'Application.people','SearchName'



Примеры выше помогут вам сгенерировать скрипт T-SQL для объектов базы данных. Теперь давайте рассмотрим альтернативы оператору sp_helptext.

Первая альтернатива sp_helptext


Мы можем использовать SQL Server Management Studio (SSMS) для генерации скрипта объекта базы данных. Мы узнаем, как сгенерировать скрипт CREATE OBJECT для хранимой процедуры, функции, ограничения CHECK и вычисляемых столбцов.

Генерация определения T-SQL для хранимой процедуры


Чтобы сгенерировать определение T-SQL хранимой процедуры Website.ChangePassword, откройте SSMS и подключитесь к базе данных Wideworldimportors. Разверните programmability, затем выполните правый щелчок на Website.ChangePassword, установите курсор на Script Stored Procedure, затем на Create To Click и New Query Editor Window.



Определение T-SQL для создания хранимой процедуры откроется на новой вкладке.



Замечание. Вы можете выбрать также копирование в буфер обмена или сохранение в файле.

Генерация определения T-SQL для пользовательской функции


Шаги генерации определения T-SQL для функции те же самые, что и для хранимой процедуры. Для генерации определения разверните functions в programmability, затем выполните правый щелчок на Website.CalculateCustomerPrice и последовательно переведите курсор на Script Function и Create To, после чего щелкните на New Query Editor Window.


Определение T-SQL для создания функции откроется на новой вкладке.



Генерация определения T-SQL для представления


Для генерации определения представления [Website].[Suppliers] разверните базу данных Wideworldimportors, затем views, после чего выполните правый щелчок на [Website].[Suppliers], наведите курсор на Script view as, а затем на Create To, и щелкните на New query editor window.



Скрипт для создания [Website].[Suppliers] будет создан в новой вкладке.



Генерация определения T-SQL для ограничения CHECK


Шаги генерации определения T-SQL для ограничения CHECK отличаются. Для генерации определения ограничения check с именем [CK_Sales_Invoices_ReturnedDeliveryData_Must_Be_Valid_JSON], созданном на таблице [Sales].[Invoices], разверните Wideworldimportors, затем Tables, Sales.Invoices и Constraints; выполните правый щелчок на [CK_Sales_Invoices_ReturnedDeliveryData_Must_Be_Valid_JSON], выберите Script constraint as и Create To, затем щелкните на New Query Editor Window.



Определение T-SQL для создания ограничения будет сгенерировано на новой вкладке окна редактора запросов.

Вторая альтернатива оператора sp_helptext


Как упоминалось в начале статьи, оператор sp_helptext берет определение объекта из sys.sql_modules. Поэтому мы можем выполнить оператор SELECT к динамическому представлению, чтобы получить определение T-SQL. Допустим нам нужно получить код T-SQL для хранимой процедуры Website.ChangePassword. Выполните следующий запрос.

use WideWorldImporters
go
select definition from sys.sql_modules where object_id=object_id('Website.ChangePassword')



Выводы


В этой статье мы узнали о системной хранимой процедуре sp_helptext и её использовании на нескольких практических примерах. Кроме того, были рассмотрены две альтернативы sp_helptext. Первая использует SQL Server Management Studio для генерации скрипта. Вторая альтернатива - это выполнение оператора SELECT к таблице sys.sql_modules и вывода информации из столбца definition.
Категории: T-SQL

Обратные ссылки

Нет обратных ссылок

Комментарии

Показывать комментарии Как список | Древовидной структурой

Нет комментариев.

Автор не разрешил комментировать эту запись

Добавить комментарий

Enclosing asterisks marks text as bold (*word*), underscore are made via _word_.
Standard emoticons like :-) and ;-) are converted to images.

To prevent automated Bots from commentspamming, please enter the string you see in the image below in the appropriate input box. Your comment will only be submitted if the strings match. Please ensure that your browser supports and accepts cookies, or your comment cannot be verified correctly.
CAPTCHA

Form options

Добавленные комментарии должны будут пройти модерацию прежде, чем будут показаны.