Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Выполнение хранимой процедуры

Читайте также:
  1. II. МЕТОДЫ, ПОДХОДЫ И ПРОЦЕДУРЫ ДИАГНОСТИКИ И ЛЕЧЕНИЯ
  2. II. МЕТОДЫ, ПОДХОДЫ И ПРОЦЕДУРЫ ДИАГНОСТИКИ И ЛЕЧЕНИЯ
  3. III. Административные процедуры
  4. III. НЕВЫПОЛНЕНИЕ ОБЯЗАТЕЛЬСТВ ПО КОНТРАКТУ
  5. Административные процедуры.
  6. Анализ результатов переговоров и выполнение достигнутых договоренностей
  7. Аудиторские процедуры, используемые при аудите кассовых операций
  8. б) Выполнение расчетов
  9. Б) инстанции и процедуры, обеспечивающие соблюдение (в том числе принудительное) этих правил.
  10. Бесконечное выполнение

Для выполнения хранимой процедуры используется команда:

[[ EXEC [ UTE] имя_процедуры [;номер] [[@имя_параметра=]{значение | @имя_переменной}

[OUTPUT ]|[DEFAULT ]][,...n]

Если вызов хранимой процедуры не является единственной командой в пакете, то присутствие команды EXECUTE обязательно. Более того, эта команда требуется для вызова процедуры из тела другой процедуры или триггера.

Использование ключевого слова OUTPUT при вызове процедуры разрешается только для параметров, которые были объявлены при создании процедуры с ключевым словом OUTPUT.

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

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

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

Замечание Пример 1: Процедура без параметров. Разработать процедуру для получения названий и стоимости товаров, приобретенных Ивановым. CREATE PROC my_proc1 AS SELECT Товар.Название, Товар.Цена*Сделка.Количество AS Стоимость, Клиент.Фамилия FROM Клиент INNER JOIN (Товар INNER JOIN Сделка ON Товар.КодТовара=Сделка.КодТовара) ON Клиент.КодКлиента=Сделка.КодКлиента WHERE Клиент.Фамилия=’Иванов’ Для обращения к процедуре можно использовать команды: EXEC my_proc1 или my_proc1 Процедура возвращает набор данных. Пример 2: Процедура без параметров. Создать процедуру для уменьшения цены товара первого сорта на 10%. CREATE PROC my_proc2 AS UPDATE Товар SET Цена=Цена*0.9 WHERE Сорт=’первый’ Для обращения к процедуре можно использовать команды: EXEC my_proc2 или my_proc2 Процедура не возвращает никаких данных. Пример 3: Процедура с входным параметром. Создать процедуру для получения названий и стоимости товаров, которые приобрел заданный клиент. CREATE PROC my_proc3 @k VARCHAR(20) AS SELECT Товар.Название, Товар.Цена*Сделка.Количество AS Стоимость, Клиент.Фамилия FROM Клиент INNER JOIN (Товар INNER JOIN Сделка ON Товар.КодТовара=Сделка.КодТовара) ON Клиент.КодКлиента=Сделка.КодКлиента WHERE Клиент.Фамилия=@k Для обращения к процедуре можно использовать команды: EXEC my_proc3 'Иванов' или my_proc3 @k='Иванов' Пример 4: Процедура с входными параметрами. Создать процедуру для уменьшения цены товара заданного типа в соответствии с указанным %. CREATE PROC my_proc4 @t VARCHAR(20), @p FLOAT AS UPDATE Товар SET Цена=Цена*(1-@p) WHERE Тип=@t Для обращения к процедуре можно использовать команды: EXEC my_proc4 'Вафли',0.05 или EXEC my_proc4 @t='Вафли', @p=0.05 Пример 5: Процедура с входными параметрами и значениями по умолчанию. Создать процедуру для уменьшения цены товара заданного типа в соответствии с указанным %. CREATE PROC my_proc5 @t VARCHAR(20)=’Конфеты', @p FLOAT=0.1 AS UPDATE Товар SET Цена=Цена*(1-@p) WHERE Тип=@t Для обращения к процедуре можно использовать команды: EXEC my_proc5 'Вафли',0.05 или EXEC my_proc5 @t='Вафли', @p=0.05 или EXEC my_proc5 @p=0.05 В этом случае уменьшается цена конфет (значение типа не указано при вызове процедуры и берется по умолчанию). EXEC my_proc5 В последнем случае оба параметра (и тип, и проценты) не указаны при вызове процедуры, их значения берутся по умолчанию. Пример 6: Процедура с входными и выходными параметрами. Создать процедуру для определения общей стоимости товаров, проданных за конкретный месяц. CREATE PROC my_proc6 @m INT, @s FLOAT OUTPUT AS SELECT @s=Sum(Товар.Цена*Сделка.Количество) FROM Товар INNER JOIN Сделка ON Товар.КодТовара=Сделка.КодТовара GROUP BY Month(Сделка.Дата) HAVING Month(Сделка.Дата)=@m Для обращения к процедуре можно использовать команды: DECLARE @st FLOAT EXEC my_proc6 1,@st OUTPUT SELECT @st Этот блок команд позволяет определить стоимость товаров, проданных в январе (входной параметр месяц указан равным 1). Создать процедуру для определения общего количества товаров, приобретенных фирмой, в которой работает заданный сотрудник. Сначала разработаем процедуру для определения фирмы, где работает сотрудник. CREATE PROC my_proc7 @n VARCHAR(20), @f VARCHAR(20) OUTPUT AS SELECT @f=Фирма FROM Клиент WHERE Фамилия=@n Пример 7: Использование вложенных процедур. Создать процедуру для определения общего количества товаров, приобретенных фирмой, в которой работает заданный сотрудник. Затем создадим процедуру, подсчитывающую общее количество товара, который закуплен интересующей нас фирмой. CREATE PROC my_proc8 @fam VARCHAR(20), @kol INT OUTPUT AS DECLARE @firm VARCHAR(20) EXEC my_proc7 @fam,@firm OUTPUT SELECT @kol=Sum(Сделка.Количество) FROM Клиент INNER JOIN Сделка ON Клиент.КодКлиента=Сделка.КодКлиента GROUP BY Клиент.Фирма HAVING Клиент.Фирма=@firm Вызов процедуры осуществляется с помощью команды: DECLARE @k INT EXEC my_proc8 ‘Иванов’,@k OUTPUT SELECT @k
Пример 1: Процедура без параметров. Разработать процедуру для получения названий и стоимости товаров, приобретенных Ивановым. CREATE PROC my_proc1 AS SELECT Товар.Название, Товар.Цена*Сделка.Количество AS Стоимость, Клиент.Фамилия FROM Клиент INNER JOIN (Товар INNER JOIN Сделка ON Товар.КодТовара=Сделка.КодТовара) ON Клиент.КодКлиента=Сделка.КодКлиента WHERE Клиент.Фамилия=’Иванов’ Для обращения к процедуре можно использовать команды: EXEC my_proc1 или my_proc1 Процедура возвращает набор данных. Пример 2: Процедура без параметров. Создать процедуру для уменьшения цены товара первого сорта на 10%. CREATE PROC my_proc2 AS UPDATE Товар SET Цена=Цена*0.9 WHERE Сорт=’первый’ Для обращения к процедуре можно использовать команды: EXEC my_proc2 или my_proc2 Процедура не возвращает никаких данных. Пример 3: Процедура с входным параметром. Создать процедуру для получения названий и стоимости товаров, которые приобрел заданный клиент. CREATE PROC my_proc3 @k VARCHAR(20) AS SELECT Товар.Название, Товар.Цена*Сделка.Количество AS Стоимость, Клиент.Фамилия FROM Клиент INNER JOIN (Товар INNER JOIN Сделка ON Товар.КодТовара=Сделка.КодТовара) ON Клиент.КодКлиента=Сделка.КодКлиента WHERE Клиент.Фамилия=@k Для обращения к процедуре можно использовать команды: EXEC my_proc3 'Иванов' или my_proc3 @k='Иванов' Пример 4: Процедура с входными параметрами. Создать процедуру для уменьшения цены товара заданного типа в соответствии с указанным %. CREATE PROC my_proc4 @t VARCHAR(20), @p FLOAT AS UPDATE Товар SET Цена=Цена*(1-@p) WHERE Тип=@t Для обращения к процедуре можно использовать команды: EXEC my_proc4 'Вафли',0.05 или EXEC my_proc4 @t='Вафли', @p=0.05 Пример 5: Процедура с входными параметрами и значениями по умолчанию. Создать процедуру для уменьшения цены товара заданного типа в соответствии с указанным %. CREATE PROC my_proc5 @t VARCHAR(20)=’Конфеты', @p FLOAT=0.1 AS UPDATE Товар SET Цена=Цена*(1-@p) WHERE Тип=@t Для обращения к процедуре можно использовать команды: EXEC my_proc5 'Вафли',0.05 или EXEC my_proc5 @t='Вафли', @p=0.05 или EXEC my_proc5 @p=0.05 В этом случае уменьшается цена конфет (значение типа не указано при вызове процедуры и берется по умолчанию). EXEC my_proc5 В последнем случае оба параметра (и тип, и проценты) не указаны при вызове процедуры, их значения берутся по умолчанию. Пример 6: Процедура с входными и выходными параметрами. Создать процедуру для определения общей стоимости товаров, проданных за конкретный месяц. CREATE PROC my_proc6 @m INT, @s FLOAT OUTPUT AS SELECT @s=Sum(Товар.Цена*Сделка.Количество) FROM Товар INNER JOIN Сделка ON Товар.КодТовара=Сделка.КодТовара GROUP BY Month(Сделка.Дата) HAVING Month(Сделка.Дата)=@m Для обращения к процедуре можно использовать команды: DECLARE @st FLOAT EXEC my_proc6 1,@st OUTPUT SELECT @st Этот блок команд позволяет определить стоимость товаров, проданных в январе (входной параметр месяц указан равным 1). Создать процедуру для определения общего количества товаров, приобретенных фирмой, в которой работает заданный сотрудник. Сначала разработаем процедуру для определения фирмы, где работает сотрудник. CREATE PROC my_proc7 @n VARCHAR(20), @f VARCHAR(20) OUTPUT AS SELECT @f=Фирма FROM Клиент WHERE Фамилия=@n Пример 7: Использование вложенных процедур. Создать процедуру для определения общего количества товаров, приобретенных фирмой, в которой работает заданный сотрудник. Затем создадим процедуру, подсчитывающую общее количество товара, который закуплен интересующей нас фирмой. CREATE PROC my_proc8 @fam VARCHAR(20), @kol INT OUTPUT AS DECLARE @firm VARCHAR(20) EXEC my_proc7 @fam,@firm OUTPUT SELECT @kol=Sum(Сделка.Количество) FROM Клиент INNER JOIN Сделка ON Клиент.КодКлиента=Сделка.КодКлиента GROUP BY Клиент.Фирма HAVING Клиент.Фирма=@firm Вызов процедуры осуществляется с помощью команды: DECLARE @k INT EXEC my_proc8 ‘Иванов’,@k OUTPUT SELECT @k

 

Загрузка...

Дата добавления: 2014-12-19; просмотров: 21 | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2018 год. (0.008 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав