Teradata - Procedimiento almacenado

Un procedimiento almacenado contiene un conjunto de sentencias SQL y sentencias de procedimiento. Pueden contener solo declaraciones de procedimiento. La definición de procedimiento almacenado se almacena en la base de datos y los parámetros se almacenan en tablas de diccionario de datos.

Ventajas

  • Los procedimientos almacenados reducen la carga de red entre el cliente y el servidor.

  • Proporciona mayor seguridad ya que se accede a los datos a través de procedimientos almacenados en lugar de acceder a ellos directamente.

  • Ofrece un mejor mantenimiento ya que la lógica empresarial se prueba y se almacena en el servidor.

Procedimiento de creación

Los procedimientos almacenados se crean mediante la instrucción CREATE PROCEDURE.

Sintaxis

A continuación se muestra la sintaxis genérica de la instrucción CREATE PROCEDURE.

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

Ejemplo

Considere la siguiente tabla de sueldos.

Numero de empleado Bruto Deducción Salario neto
101 40.000 4000 36.000
102 80.000 6.000 74.000
103 90.000 7.000 83.000
104 75.000 5,000 70.000

El siguiente ejemplo crea un procedimiento almacenado denominado InsertSalary para aceptar los valores e insertarlos en la tabla de sueldos.

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;

Procedimientos de ejecución

Los procedimientos almacenados se ejecutan mediante la instrucción CALL.

Sintaxis

A continuación se muestra la sintaxis genérica de la instrucción CALL.

CALL <procedure name> [(parameter values)];

Ejemplo

El siguiente ejemplo llama al procedimiento almacenado InsertSalary e inserta registros en la tabla de sueldos.

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

Una vez que se ejecuta la consulta anterior, produce el siguiente resultado y puede ver la fila insertada en la tabla Salario.

Numero de empleado Bruto Deducción Salario neto
101 40.000 4000 36.000
102 80.000 6.000 74.000
103 90.000 7.000 83.000
104 75.000 5,000 70.000
105 20.000 2000 18.000