Книги
чёрным по белому
Главное меню
Главная О нас Добавить материал Поиск по сайту Карта книг Карта сайта
Книги
Археология Архитектура Бизнес Биология Ветеринария Военная промышленность География Геология Гороскоп Дизайн Журналы Инженерия Информационные ресурсы Искусство История Компьютерная литература Криптология Кулинария Культура Лингвистика Математика Медицина Менеджмент Металлургия Минералогия Музыка Научная литература Нумизматика Образование Охота Педагогика Политика Промышленные производства Психология Путеводители Религия Рыбалка Садоводство Саморазвитие Семиотика Социология Спорт Столярное дело Строительство Техника Туризм Фантастика Физика Футурология Химия Художественная литература Экология Экономика Электроника Энергетика Этика Юриспруденция
Новые книги
Цуканов Б.И. "Время в психике человека" (Медицина)

Суворов С. "Танк Т-64. Первенец танков 2-го поколения " (Военная промышленность)

Нестеров В.А. "Основы проэктирования ракет класса воздух- воздух и авиационных катапульных установок для них" (Военная промышленность)

Фогль Б. "101 вопрос, который задала бы ваша кошка своему ветеринару если бы умела говорить" (Ветеринария)

Яблоков Н.П. "Криминалистика" (Юриспруденция)
Реклама

Разработка корпоративных приложений в Access 2002 - Литвин П.

Литвин П. Разработка корпоративных приложений в Access 2002 — Спб.: Питер, 2002. — 848 c.
ISBN 5-314-00181-0
Скачать (прямая ссылка): razrabotkaprilojeniy2002.djvu
Предыдущая << 1 .. 74 75 76 77 78 79 < 80 > 81 82 83 84 85 86 .. 357 >> Следующая

Мы описали несколько упрощенную версию оператора CREATE PROCEDURE. Его полное определение вы найдете в справочной системе SQL Server "Books Online".
А вот еще один пример хранимой процедуры, где с помощью оператора UPDATE
стоимость блюд в меню увеличивается на 10%:
Create Procedure procMenuPricesIncrease As
UPDATE tblMenu SET Price - Pr1ce*l.l
ПРИМЕЧАНИЕ
Хранимая процедура procMenuPricesIncrease находится в базе данных CHD5.ADP. Если вы попытаетесь просмотреть указанную процедуру (или другие хранимые процедуры, представленные в этой главе) в режиме конструктора, то Access отобразит ве в окне конструктора запросов. Для того чтобы просмотреть код хранимой процедуры, вы должны переключиться в режим SQL.
192
Глава 5 * Создание хранимых процедур и триггеров
Следующая хранимая процедура, procCreateTestTablel, создает таблицу с именем tbl Test, состоящую из двух столбцов:
Create Procedure procCreateTestTablel As
CREATE TABLE tblTest
(Id INT CONSTRAINT PrimaryKey PRIMARY KEY.
Description VARCHAR(20))
ПРИМЕЧАНИЕ
Если для редактирования существующей хранимой процедуры вы используете режим конструктора запросов SQL или любой текстовый редактор, SQL Server изменит оператор CREATE PROCEDURE на ALTER PROCEDURE, поскольку именно он применяется для обновления существующей хранимой процедуры.
Понятие параметров и переменных
Хранимые процедуры SQL Server, подобно процедурам VBA, могут иметь параметры и переменные, а также возвращать значения.
Параметры
Хотя хранимая процедура может быть полезна и без параметров, наличие таковых делает ее гораздо более гибким инструментом управления данными. Причем параметры могут быть как входными, так и выходными.
Имена всех параметров хранимой процедуры обязательно должны начинаться с символа @, и все они являются локальными для процедуры. По умолчанию все параметры считаются входными. Если же вы хотите создать выходной параметр, поместите в конец его объявления ключевое слово OUTPUT.
Входные параметры
Входные параметры служат для передачи информации хранимой процедуре. В частности, их можно использовать для фильтрации записей, возвращаемых оператором SELECT.
В хранимой процедуре procGetCustomer2 мы определили для этой цели параметр @custid:
Create Procedure procGetCustomer2 ecustld INT As
SELECT * FROM tbICustomer WHERE Customerld - Pcustid
ПРИМЕЧАНИЕ
При выполнении хранимой процедуры из окна базы данных Access система сама запрашивает у вас значение каждого параметра, подобно тому, как она это делает при выполнении обычного запроса с параметрами.
Выходные параметры
Бывает необходимо, чтобы хранимая процедура возвратила информацию обратно вызывающей процедуре. Для этой цели используются выходные параметры.
Понятие параметров и переменных
193
В таком параметре можно получить, скажем, значение поля идентификатора, автоматически назначаемого каждой записи.
Приведенная далее хранимая процедура procInsertOrder имеет шесть входных параметров и один выходной.
Create Procedure procInsertOrder @orderdate datetime.
@customerid int.
@ordertakerid int.
@deliverydate datetime.
@paymentmethod nvarchar(50).
@notes ntext.
Porderid int OUTPUT As
set nocount on INSERT INTO tblDrder (DrderDate. Customerld.
DrderTakerld, DeliveryDate.
PaymentMethod. Notes)
VALUES
(@orderdate. tastomerid,
@ordertakerid. @deliverydate.
@paymentmethod, @notes)
-- Возвращаем вызывающей программе новое -- значение Orderld в выходном параметре SELECT Gorderid - ^IDENTITY
Для присваивания значения выходному параметру или переменной используется специальная форма оператора SELECT:
SELECT @параметр - значение
То же самое можно сделать и с помощью оператора SET:
SET ^параметр - значение
В процедуре procInsertOrder параметру @orderid присваивается значение специальной переменной T-SQL (c)(c)IDENTITY, которая возвращает значение последнего присвоенного идентификатора записи.
ПРИМЕЧАНИЕ
В пользовательском интерфейсе Access отсутствуют средства для непосредственной обработки выходных параметров хранимых процедур. Поэтому для того чтобы вы могли протестировать процедуру procInsertOrder, мы написали еще одну хранимую процедуру, procInsertOrderTest, о которой рассказывается в следующем разделе.
Объявление и использование переменных
В дополнение к параметрам хранимая процедура может иметь и локальные переменные. Для их объявления предназначен оператор DECLARE:
DECLARE @переменная тип_данных [, ...]
Как и в случае выходных параметров, для установления значения переменной используется либо специальная форма оператора SELECT, либо оператор SET:
-- Следующие два оператора эквивалентны.
SELECT @переменная - значение SET Фперененная - значение
194
Глава 5"Создание хранимых процедур и триггеров
Например, для тестирования хранимой процедуры procInsertOrder можно воспользоваться такой процедурой:
Create Procedure procInsertOrderTest As
DECLARE GlntOrderld INT
EXECUTE procInsertDrder
1 9/1/2001'. 1, 1. '9 /1/2001'.
Предыдущая << 1 .. 74 75 76 77 78 79 < 80 > 81 82 83 84 85 86 .. 357 >> Следующая