Учебники

Teradata — хранимая процедура

Хранимая процедура содержит набор операторов SQL и процедурных операторов. Они могут содержать только процедурные заявления. Определение хранимой процедуры хранится в базе данных, а параметры хранятся в таблицах словаря данных.

преимущества

  • Хранимые процедуры снижают нагрузку на сеть между клиентом и сервером.

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

  • Обеспечивает лучшее обслуживание, поскольку бизнес-логика проверяется и хранится на сервере.

Хранимые процедуры снижают нагрузку на сеть между клиентом и сервером.

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

Обеспечивает лучшее обслуживание, поскольку бизнес-логика проверяется и хранится на сервере.

Процедура создания

Хранимые процедуры создаются с использованием оператора CREATE PROCEDURE.

Синтаксис

Ниже приведен общий синтаксис оператора CREATE PROCEDURE.

CREATE PROCEDURE <procedurename> ( [parameter 1 data type, parameter 2 data type..] ) 
BEGIN 
   <SQL or SPL statements>; 
END;

пример

Рассмотрим следующую таблицу зарплат.

Сотрудник № Валовой дедукция NetPay
101 40000 4000 36000
102 80000 6000 74000
103 90000 7000 83000
104 75000 5000 70000

В следующем примере создается хранимая процедура с именем 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 и вставляется запись в таблицу зарплат.

CALL InsertSalary(105,20000,2000,18000);

Как только вышеуказанный запрос выполнен, он производит следующий вывод, и вы можете видеть вставленную строку в таблице Salary.