Обзор оператора sp_helptext
Пересказ статьи Nisarg Upadhyay. An overview of the sp_helptext statement
В этой статье вы узнаете об операторе (хранимой процедуре) sp_helptext. Я покажу различные примеры его использования и пару альтернатив.
Оператор sp_helptext используется для просмотра определения следующих объектов базы данных.
Команда имеет следующий синтаксис:
Здесь
При выполнении оператора sp_helptext определение объекта выводится в нескольких строках, каждая строка содержит 255 символов определения T-SQL. Определение объектов базы данных находится в столбце definition динамического представления sys.sql_modules.
Давайте теперь разберем синтаксис на нескольких примерах. Я использую базу данных Wideworldimportors.
Для получения определения хранимой процедуры Website.ChangePassword выполняется следующий запрос:
Пользовательская скалярная функция с именем [Website].[CalculateCustomerPrice] была создана в базе данных wideworldimportors. Для вывода определения [Website].[CalculateCustomerPrice] выполните следующий запрос. Я сократил вывод на скриншоте, поскольку код T-SQL очень длинный.
Представление с именем [Website].[Suppliers] было создано в базе данных wideworldimportors. Для вывода определения [Website].[Suppliers] выполните следующий запрос.
Вычисляемый столбец с именем SearchName был создан в таблице Application.People. Для получения определения вычисляемого столбца выполните следующий запрос.
Примеры выше помогут вам сгенерировать скрипт T-SQL для объектов базы данных. Теперь давайте рассмотрим альтернативы оператору sp_helptext.
Мы можем использовать SQL Server Management Studio (SSMS) для генерации скрипта объекта базы данных. Мы узнаем, как сгенерировать скрипт CREATE OBJECT для хранимой процедуры, функции, ограничения CHECK и вычисляемых столбцов.
Чтобы сгенерировать определение T-SQL хранимой процедуры Website.ChangePassword, откройте SSMS и подключитесь к базе данных Wideworldimportors. Разверните programmability, затем выполните правый щелчок на Website.ChangePassword, установите курсор на Script Stored Procedure, затем на Create To Click и New Query Editor Window.
Определение T-SQL для создания хранимой процедуры откроется на новой вкладке.
Замечание. Вы можете выбрать также копирование в буфер обмена или сохранение в файле.
Шаги генерации определения T-SQL для функции те же самые, что и для хранимой процедуры. Для генерации определения разверните functions в programmability, затем выполните правый щелчок на Website.CalculateCustomerPrice и последовательно переведите курсор на Script Function и Create To, после чего щелкните на New Query Editor Window.
Определение T-SQL для создания функции откроется на новой вкладке.
Для генерации определения представления [Website].[Suppliers] разверните базу данных Wideworldimportors, затем views, после чего выполните правый щелчок на [Website].[Suppliers], наведите курсор на Script view as, а затем на Create To, и щелкните на New query editor window.
Скрипт для создания [Website].[Suppliers] будет создан в новой вкладке.
Шаги генерации определения 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 берет определение объекта из sys.sql_modules. Поэтому мы можем выполнить оператор SELECT к динамическому представлению, чтобы получить определение T-SQL. Допустим нам нужно получить код T-SQL для хранимой процедуры Website.ChangePassword. Выполните следующий запрос.
В этой статье мы узнали о системной хранимой процедуре sp_helptext и её использовании на нескольких практических примерах. Кроме того, были рассмотрены две альтернативы sp_helptext. Первая использует SQL Server Management Studio для генерации скрипта. Вторая альтернатива - это выполнение оператора SELECT к таблице sys.sql_modules и вывода информации из столбца definition.
exec sp_helptext [ @obj_name = ] 'Object_Name' , [ @column_name = ] computed_column_name
Здесь
- @obj_name: Задает валидное имя объекта базы данных. Объектами могут быть хранимая процедура, функция, вычисляемые столбцы или триггеры. Если вы укажете квалифицированное имя объекта (имя_схемы.имя_объекта), то требуется заключить его в кавычки. Этот параметр не имеет значения по умолчанию.
- @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.
Обратные ссылки
Автор не разрешил комментировать эту запись
Комментарии
Показывать комментарии Как список | Древовидной структурой