Терадата - хранимая процедура
Хранимая процедура содержит набор операторов SQL и процедурных операторов. Они могут содержать только процедурные заявления. Определение хранимой процедуры хранится в базе данных, а параметры хранятся в таблицах словаря данных.
Преимущества
Хранимые процедуры уменьшают нагрузку на сеть между клиентом и сервером.
Обеспечивает лучшую безопасность, поскольку доступ к данным осуществляется через хранимые процедуры, а не напрямую.
Обеспечивает лучшее обслуживание, поскольку бизнес-логика проверяется и сохраняется на сервере.
Создание процедуры
Хранимые процедуры создаются с помощью оператора CREATE PROCEDURE.
Синтаксис
Ниже приводится общий синтаксис оператора CREATE PROCEDURE.
CREATE PROCEDURE <procedurename> ( [parameter 1 data type, parameter 2 data type..] )
BEGIN
<SQL or SPL statements>;
END;
пример
Рассмотрим следующую таблицу заработной платы.
Работник № | Валовой | Удержание | NetPay |
---|---|---|---|
101 | 40 000 | 4 000 | 36 000 |
102 | 80 000 | 6000 | 74 000 |
103 | 90 000 | 7 000 | 83 000 |
104 | 75 000 | 5 000 | 70 000 |
В следующем примере создается хранимая процедура с именем InsertSalary для принятия значений и вставки в таблицу зарплат.
CREATE PROCEDURE InsertSalary (
IN in_EmployeeNo INTEGER, IN in_Gross INTEGER,
IN in_Deduction INTEGER, IN in_NetPay INTEGER
)
BEGIN
INSERT INTO Salary (
EmployeeNo,
Gross,
Deduction,
NetPay
)
VALUES (
:in_EmployeeNo,
:in_Gross,
:in_Deduction,
:in_NetPay
);
END;
Выполнение процедур
Хранимые процедуры выполняются с использованием оператора CALL.
Синтаксис
Ниже приведен общий синтаксис оператора CALL.
CALL <procedure name> [(parameter values)];
пример
В следующем примере вызывается хранимая процедура InsertSalary и вставляются записи в Salary Table.
CALL InsertSalary(105,20000,2000,18000);
После выполнения вышеуказанного запроса он дает следующий результат, и вы можете увидеть вставленную строку в таблице Salary.
Работник № | Валовой | Удержание | NetPay |
---|---|---|---|
101 | 40 000 | 4 000 | 36 000 |
102 | 80 000 | 6000 | 74 000 |
103 | 90 000 | 7 000 | 83 000 |
104 | 75 000 | 5 000 | 70 000 |
105 | 20 000 | 2 000 | 18 000 |