NULL
(20 row(s) affected)
Расширенные встроенные процедуры:
Программируются с использованием интерфейса программирования Open Data Services.
Позволяет вам создавать ваши собственные внешние программы с использованием языков программирования, таких как Visual C++.
Могут содержать множество функций;
Могут быть вызваны из клиента или SQL Server.
Могут быть добавлены только в базу данных master.
Существуют две основные расширенные процедуры:
xp_cmdshell – выполняет указанную строку в командной строке ОС.
xp_logevent – Сохраняет указанное сообщение в журнал SQL Server или Windows.
Вы можете отправлять e-mail сообщения с использованием xp_sendmail процедуры.
Для увеличения эффективности процедур, вы должны включить сообщения об ошибках, что отображения пользователю статуса транзакций (удачно или ошибка). Вы должны выполнять логику задач, бизнес логику и проверку ошибок, прежде чем начнёте транзакции, чтобы оставить транзакцию короткой.
Вы должны использовать стратегии программирования, такие как проверку на существование для распознавания ошибок. Когда возникает ошибка, предоставляйте столько информации пользователю, сколько возможно.
Оператор RETURN может возвращать целое значение статуса. Возвращаемое значение 0 означает удачное выполнение, значения от 0 до -14 используются, значения от -15 до -99 зарезервированы для дальнейшего использования.
Пример
Следующий пример создаёт процедуру, которая возвращает информацию из таблицы Orders с помощью запроса просмотрщика Orders Qry. Оператор RETURN возвращает общее количество строк и оператора SELECT в другую процедуру.
USE Northwind
GO
CREATE PROC dbo.GetOrders
@CustomerID nchar(10)
AS
SELECT OrderID, CustomerID, EmployeeID
FROM [Orders Qry]
WHERE CustomerID = @CustomerID
RETURN (@@ROWCOUNT)
GO
Пример
Следующая встроенная процедура определяет пользовательское сообщение, которое должно быть записано в журнал Windows 2000.
EXEC sp_addmessage
@msgnum=50010,
@severity=10,
@msgtext='Customer cannot be deleted.',
@with_log='true'
Системная функция @@error содержит номер ошибки последнего выполненного оператора Transact-SQL. Её значение изменяется после выполнения каждого оператора. Если значение равно 0, значит оператор выполнен удачно.
Оператор RAISERROR возвращает сообщение ошибки определённое пользователем и набор системных флагов для записи, возникшей ошибки. Следующий пример генерирует сообщение ошибки и записывает в журнал приложений Windows:
RAISERROR (50010, 16, 1) WITH LOG
Оператор PRINT возвращает пользовательское сообщение обработчику сообщений клиента, однако, в отличие от RAISERROR, этот оператор не помещает код ошибки в @@error функцию.
Для написания более эффективных процедур, следуйте следующей рекомендуемой практики:
Проверяйте все входные параметры для определения отсутствующих значений;
Создавайте процедуры для выполнения только одной задачи;
Проверяйте ошибки выполнения, и бизнес логики до начала транзакции.
Используйте одинаковые настройки соединения для всех процедур.
Рассмотрите файлы SupplierProduct.sql и SupplierProductInsert.sql для понимания процесса генерации ошибок.
Примеры возвращаемых значений расположены в файлах: Return1.sql, Return2.sql, Return3.sql.
Для просмотра времени выполнения процедуры используйте SQL Profiler.
Запустите SQL Profiler.
Подключитесь к серверу.
Перед вами откроется окно создания нового просмотрщика Trace properties. Просто нажмите RUN
Выполните скрипт в файле SupplierProductInsert.sql
Переключитесь в SQL Profiler и просмотрите данные о выполнении скрипта.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.