Программирование в Microsoft SQL Server 2000

         

Использование хранимых процедур


Для вызова пользовательских и системных хранимых процедур используется оператор EXECUTE. Если хранимая процедура не требует параметров, или если она не возвращает результат, синтаксис ее будет очень простым:

EXECUTE имя_процедуры

Совет. Ключевое слово EXECUTE можно не указывать, если вызов хранимой процедуры является первым оператором в пакете. Однако, как и в других подобных случаях, лучше лишний раз подстраховаться. Поэтому заведите привычку всегда использовать ключевое слово EXECUTE или его аббревиатуру EXEC при использовании хранимой процедуры.

Выполните простую хранимую процедуру

  1. Нажмите кнопку New Query (Новый запрос)
    в панели инструментов анализатора запросов Query Analyzer. Query Analyzer откроет новое окно Query (Запрос).
  2. Введите в окне запроса Query следующий оператор: EXECUTE sp_helpdb
  3. Нажмите кнопку Execute Query (Выполнить запрос)
    в панели инструментов анализатора запросов Query Analyzer. Query Analyzer выполнит хранимую процедуру и отобразит результаты.


    увеличить изображение

Внимание! Поскольку процедура sp_help отображает все базы данных, имеющиеся на текущем сервере, ваша структура может не совпадать с той, которая представлена на рисунке. В вашей панели сетки Grid Pane могут содержаться другие базы данных.

Если хранимая процедура принимает входные параметры, вы можете предоставить их, указав позицию или имя. Чтобы предоставит параметры по позиции, вам нужно просто указать их после имени хранимой процедуры, отделяя запятыми:

EXECUTE имя_процедуры параметр [ , параметр ...]

Использование Object Browser для работы с хранимыми процедурами

Панель Object Browser содержит папку Stored Procedures для каждой базы данных, включая главную. Каждая хранимая процедура, содержащаяся в списке, имеет папку Parameters. В этой папке в определенном порядке размещаются параметры хранимой процедуры, поэтому вы можете воспользоваться ею для проверки имен параметров и их позиций.

Для создания сценария EXECUTE для хранимой процедуры вы также можете воспользоваться командами скриптования из контекстного меню. Сценарий EXECUTE в Object Browser создает включения объявлений локальных переменных для возвращаемых значений и выходных параметров.


Выполните хранимую процедуру с входными параметрами

  1. Выберите панель редактирования Editor Pane в окне Query (Запрос) и нажмите кнопку Clear Window (Очистить окно)
    в панели инструментов анализатора запросов Query Analyzer.
  2. Введите следующий оператор в окне Query (Запрос):

    EXECUTE sp_dboption 'Aromatherapy', 'read only'
  3. Нажмите кнопку Execute Query (Выполнить запрос)
    в панели инструментов анализатора запросов Query Analyzer. Query Analyzer выполнит запрос и отобразит результаты.





Параметры также могут быть переданы хранимой процедуре путем явного указания их имен. При этом от вас потребуется больше усилий при вводе, но зато вы сможете задать параметры в любом порядке. Синтаксис для вызова хранимой процедуры с указанием именованных параметров следующий:

EXECUTE хранимая_процедура @имя_парам = значение [, @имя_парам = значение ...]

Выполните хранимую процедуру с именованными параметрами

  1. Выберите панель редактирования Editor Pane в окне Query (Запрос) и нажмите кнопку Clear Window (Очистить окно)
    в панели инструментов анализатора запросов Query Analyzer.
  2. Введите следующий оператор в окне Query (Запрос):



    EXECUTE sp_dboption @optname = 'read only', @dbname = 'Aromatherapy'

  3. Нажмите кнопку Execute Query (Выполнить запрос)
    в панели инструментов анализатора запросов Query Analyzer. Query Analyzer выполнит запрос и отобразит результаты.


    увеличить изображение



Некоторые хранимые процедуры предоставляют для своих параметров значения по умолчанию. Подобно значениям по умолчанию для столбцов таблицы, параметры по умолчанию используются хранимой процедурой, если пользователь явно не задал значение. Использовать умолчание проще для именованных параметров – вам достаточно не указывать значение для параметра.

Если вы передаете параметры по позициям, обращение к умолчанию параметра зависит от его положения в списке. Если параметр находится в конце списка, или если этот параметр единственный, вы можете просто опустить его (не указывать). Если параметр не является последним параметром в списке, вы можете воспользоваться ключевым словом DEFAULT, чтобы указать хранимой процедуре использовать значение по умолчанию.

Выполните хранимую процедуру с использованием ключевого слова DEFAULT

  1. Выберите панель редактирования Editor Pane в окне Query (Запрос) и нажмите кнопку Clear Window (Очистить окно)
    в панели инструментов анализатора запросов Query Analyzer.
  2. Введите следующий оператор в окне Query (Запрос):



    EXECUTE sp_dboption DEFAULT; 'read only'
  3. Нажмите кнопку Execute Query (Выполнить запрос)
    в панели инструментов анализатора запросов Query Analyzer. Query Analyzer выполнит запрос и отобразит результаты.





Кроме доступа к переданным им данным, хранимые процедуры могут также возвращать данные обратно через выходные параметры. Выходные параметры должны быть локальными переменными. Они могут быть заданы либо путем указания их имен, либо путем указания их позиций, но при этом после выходного параметра должно следовать ключевое слово OUTPUT.

Выполните хранимую процедуру с выходными параметрами

  1. Выберите панель редактирования Editor Pane в окне Query (Запрос) и нажмите кнопку Clear Window (Очистить окно)
    в панели инструментов анализатора запросов Query Analyzer.
  2. Нажмите кнопку Load Script (Загрузить сценарий)
    в панели инструментов анализатора запросов Query Analyzer. Query Analyzer отобразит диалоговое окно Open Query File (Открытие файла запроса).



  3. Перейдите к папке SQL 2000 Step by Step в корневой директории, выделите сценарий TableValidation и нажмите кнопку Open (Открыть). Query Analyzer загрузит сценарий.



  4. Нажмите кнопку Execute Query (Выполнить запрос)
    в панели инструментов анализатора запросов Query Analyzer. Query Analyzer выполнит сценарий и отобразит результаты.





Синтаксис для хранимой процедуры, возвращающей значения, является неким гибридом оператора EXECUTE и оператора SET:

EXECUTE @имя_переменной = хранимая_процедура [, парам [, парам ...] ]

Большинство системных процедур имеют возвращаемые значения, но поскольку они являются параметрами по умолчанию, их можно игнорировать в описании вызова процедуры. Если вы не указали локальную переменную для приема результатов, SQL Server просто отбросит значение.

Выполните хранимую процедуру с возвращаемым значением

  1. Нажмите кнопку Load Script (Загрузить сценарий)
    в панели инструментов анализатора запросов Query Analyzer. Query Analyzer отобразит диалоговое окно Open Query File (Открытие файла запроса).



  2. Выделите сценарий ReturnValue и нажмите кнопку Open (Открыть). Query Analyzer загрузит сценарий.



  3. Нажмите кнопку Execute Query (Выполнить запрос)
    в панели инструментов анализатора запросов Query Analyzer. Query Analyzer выполнит запрос и отобразит результаты.



  4. Выберите вкладку Message (Сообщение). Query Analyzer отобразит результаты выполнения оператора PRINT, который выводит возвращаемое значение.






Содержание раздела