Виконання збережених процедур (компонент database engine)

Якщо не вказано уточнене ім'я користувача збереженої процедури, компонент Database Engine здійснює пошук процедури в наступному порядку.

  • Схема sys поточної бази даних.
  • Схема за замовчуванням викликає програми при виконанні в пакеті або в динамічному SQL. Якщо неуточнений ім'я процедури присутній в тілі визначення іншої процедури, в наступну чергу виконується пошук в схемі, що містить цю іншу процедуру. Додаткові відомості про схеми за замовчуванням див. В розділі Поділ користувальницьких схем.
  • Схема dbo поточної бази даних.

Якщо будь-яка створена користувачем збережена процедура має те ж ім'я, що і системна збережена процедура, призначена для користувача збережена процедура ні в якому разі не буде виконана при використанні неуточненими імені без вказівки імені схеми. Додаткові відомості див. У розділі Створення збережених процедур (компонент Database Engine).

Якщо в збереженій процедурі передбачена обробка аргументів, можна вказати значення аргументів.

Надане значення має бути константою або змінною; не можна вказувати ім'я функції в якості значення аргументу. Змінні можуть бути призначеними для користувача або системними, наприклад @@ spid.

В нижченаведених прикладах демонструється передача значень аргументів збереженій процедурі uspGetWhereUsedProductID. Процедура очікує значень для двох вхідних аргументів: коду продукту і дати. У прикладах показано, як передати в якості аргументів константи і змінні, а також як використовувати змінну для передачі значення функції.

Якщо необхідно вказувати параметри в порядку, відмінному від визначеного в збереженій процедурі, їх слід називати. Додаткові відомості див. У розділі Вказівка ​​імені аргументу.

Щоб вказати параметр, який повертає значення спричиненої програми, використовуйте ключове слово OUTPUT. Додаткові відомості див. У розділі Вказівка ​​напрямку параметра.

Вказівка ​​порядку аргументів

При вказівці аргументів у вигляді @ аргумент = value можна вказувати їх у будь-якому порядку. Можна також опустити аргументи, для яких представлені значення за замовчуванням. При вказівці одного аргументу у вигляді @ аргумент = value необхідно надати всі наступні аргументи тим же способом. Якщо аргументи вказуються не в форматі @ аргумент = value. слід вказувати їх у порядку, визначеному для інструкції CREATE PROCEDURE.

При виконанні процедури, що сервер відкидає будь-які аргументи, не включені в список аргументів у процесі створення процедури. Будь аргумент, переданий посиланням (явно передавальної ім'я аргументу) не приймається, якщо ім'я аргументу не збігається.

Використання значень за замовчуванням для аргументів

Хоча дозволяється опустити аргументи, для яких надані значення за замовчуванням, можна лише піддати усіканню список аргументів. Наприклад, коли в збереженій процедурі присутній п'ять аргументів, можна опустити четвертий і п'ятий, але не можна пропустити четвертий і включити п'ятий, якщо тільки аргументи не були надані в форматі @ аргумент = value.

Значення за замовчуванням, визначений для аргументу в збереженій процедурі, використовується, коли:

  • не вказано значення для аргументу при виконанні процедури, що;
  • в якості значення для аргументу вказується ключове слово DEFAULT.

Схожі статті