Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Использование SELECT для возвращаемых значений — до 10 мин

Использование RETURN для возвращаемых значений — до 10 мин.

 

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

Рассмотрим использование RETURN для возврата значения в вызывающую программу. Возвращаемое значение должно быть целым. Это может быть константа или переменная. Вы должны объявить в вызывающей программе переменную, в которой будет храниться возвращаемое значение для дальнейшего использования в этой программе. Например, следующая процедура возвратит значение 1, если цена единицы продукции для продукта, указанного во входном параметре, меньше $100; иначе она возвратит значение 99.

 

CREATE PROCEDURE CheckUnitPrice @prod_id int

AS

IF (SELECT UnitPrice

FROM Products

WHERE ProductID = @prod_id) < 100

RETURN 1

ELSE

RETURN 99

GO

 

Для вызова этой хранимой процедуры и использования возвращаемого значения объявите в вызывающей программе переменную и приравняйте ее возвращаемому значению хранимой процедуры (указав значение 66 в ProductID для входного параметра):

 

DECLARE @return_val int

EXECUTE @return_val = CheckUnitPrice 66

IF (@return_val = 1) PRINT "Unit price is less than $100"

GO

 

В результате будет выведен текст "Unit price is less than $100" (Цена единицы продукции меньше $100), поскольку цена единицы продукции для указанного продукта равна $17 и, тем самым, возвращаемое значение равно 1. Убедитесь в том, что вы задали целый тип данных, когда объявляете переменную, которая используется для хранения значения, возвращаемого оператором RETURN, поскольку этот оператор возвращает целое значение.

 

 

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

Рассмотрим пару примеров. Сначала мы создадим новую хранимую процедуру с именем PrintUnitPrice, которая возвращает цену единицы продукции для продукта, указанного во входном параметре (с помощью идентификатора этого продукта). Используется следующая последовательность:

 

CREATE PROCEDURE PrintUnitPrice @prod_id int

AS

SELECT ProductID, UnitPrice

FROM Products

WHERE ProductID = @prod_id

GO

 

Вызовите эту процедуру со значением входного параметра 66. Результаты будут выведены в следующей форме:

 

ProductID UnitPrice

------------------------------------------

66 17.00

(1 row(s) affected)

 

Для возврата значений переменных с помощью оператора SELECT, укажите после SELECT имя соответствующей переменной. В следующем примере мы снова создадим хранимую процедуру CheckUnitPrice, которая возвращает значение переменной, а также зададим заголовок выводимой колонки:

 

CREATE PROCEDURE CheckUnitPrice @prod_id INT

AS

DECLARE @var1 int

IF (SELECT UnitPrice

FROM Products

WHERE ProductID = @prod_id) > 100

SET @var1 = 1

ELSE

SET @var1 = 99

SELECT "Variable 1" = @var1

PRINT "Can add more T-SQL statements here"

GO

 

Вызовите эту процедуру со значением входного параметра 66. Результаты выполнения этой хранимой процедуры будут выведены в следующей форме:

 

Variable 1

--------------

 

(1 row(s) affected)

 

Can add more T-SQL statements here

 

Мы вывели текст оператора PRINT "Can add more T-SQL statements here" (Здесь можно добавить другие операторы T-SQL), чтобы показать отличие между возвратом значения с помощью SELECT и возвратом значения с помощью RETURN. Оператор RETURN прекращает работу хранимой процедуры в том месте, где он находится, а оператор SELECT возвращает свой результирующий набор, после чего продолжается выполнение хранимой процедуры.

Если бы в этом примере мы не задали заголовок колонки (просто указали бы SELECT @var1), то получили бы результат без заголовка, как это показано ниже:

 

--------------

 

(1 row(s) affected)

 

<== предыдущая лекция | следующая лекция ==>
Использование локальных переменных внутри хранимой процедуры — до 15 мин | Лекция № 8. Управление триггерами
Поделиться с друзьями:


Дата добавления: 2014-01-11; Просмотров: 388; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.013 сек.