Oracle sobre el uso de procedimientos de almacenamiento de bases de datos y funciones de almacenamiento

Este artículo, Xiaobian presentará el uso de procedimientos de almacenamiento de bases de datos y funciones de almacenamiento en Oracle. Los amigos que lo necesitan pueden referirse a él
El procedimiento de almacenamiento y la función de almacenamiento se refieren a las subrutinas que se almacenan en la base de datos para todas las llamadas del programa de usuarios llamados procedimientos de almacenamiento y funciones de almacenamiento
Los procedimientos de almacenamiento no tienen valor de retorno. La función de almacenamiento tiene un valor de retorno

  Crear un procedimiento de almacenamiento
Use el comando Crear procedimiento para establecer un procedimiento de almacenamiento y función de almacenamiento.

      gramática:
Crear [o reemplazar] Nombre del proceso del procedimiento (lista de parámetros)
AS
PLSQL Subrutine;

  Ejemplo de procedimiento de almacenamiento: para el empleado designado sobre la base del salario original, el 10%del salario
 
/*
es el 10%del empleado especificado en función del salario original e imprima el salario antes y después del salario
*/
SQL> create or replace procedure raiseSalary(empid in number)
    as
PSAL EMP.Sal%Tipo; -Save el salario actual de los empleados
    begin
-Query El salario del empleado
    select sal into pSal from emp where empno=empid;
-give el salario del empleado
    update emp set sal = sal*1.1 where empno=empid;
-simpresión de salario antes y después del salario
dbms_output.put_line (‘Número de empleado:’ || Empid || ‘Antes del aumento del salario
‘|| pSal ||’ Después del salario del salario ‘|| pSal*1.1);
    end;
 1  /

Procedure created
-LA LLAMADA DE PROCEDIMIENTO DE ALGACIÓN
-Método 1
SQL> set serveroutput on
SQL> exec raisesalary(7369);

Número de empleado: 7369 antes del aumento del salario
800 después de que el salario aumenta 880

Método 2
    set serveroutput on
begin
 raisesalary(7369);
end;
/

PL/SQL procedure successfully completed

 
      función de almacenamiento

La función
(función) es un programa de almacenamiento con nombre que puede traer parámetros y devolver un valor calculado. La estructura y el proceso son similares, pero debe haber una cláusula de retorno para devolver el valor de la función. Las funciones describen el tipo de nombre de función, valor de resultado y tipos de parámetros.

Crear la sintaxis de la función de almacenamiento:

Crear [o reemplazar] Nombre de función de la función (Lista de parámetros)
Tipo de valor de función de retorno
AS
PLSQL Subrutine;

 
Ejemplo: Verifique los ingresos anuales de un empleado.
SQL> /**/
    /*
Verifique el ingreso total de un empleado
    */
    create or replace function queryEmpSalary(empid in number)
    return number
   as
Número de PSAL; -Fina variables para guardar los salarios de los empleados
número de pComm; -define variables para guardar las bonificaciones de los empleados
   begin
   select sal,comm into psal,pcomm from emp where empno = empid;
   return psal*12+nvl(pcomm,0);
   end;
   /

Function created

L Llamada de función

SQL> declare
    v_sal number;
    begin
    v_sal:=queryEmpSalary(7934);
    dbms_output.put_line(‘salary is:’|| v_sal);
    end;
    /

salary is:15600

PL/SQL procedure successfully completed

SQL> begin
    dbms_output.put_line(‘salary is:’|| queryEmpSalary(7934));
    end;
    /

salary is:15600

PL/SQL procedure successfully completed

 
       disparador
El disparador de la base de datos es un programa PL/SQL asociado con tablas. Cada vez que se emite una declaración de operación de datos específica (insertar, actualizar, eliminar) en la tabla especificada, Oracle ejecuta automáticamente la secuencia de oraciones definida en el disparador.

       Tipo de gatillo
Declaración -desencadenante
se ejecuta antes o después de la operación de instrucción operativa especificada, sin importar cuánto afecte esta oración.

cor
Se activa cada registro de oraciones de activación. Use variables pseudo -recordas antiguas y nuevas en desencadenantes de fila para reconocer el estado de los valores de reconocimiento.

      Crear un disparador
Crear [o reemplazar] Nombre del activador de activación
   {BEFORE | AFTER}
{Eliminar | Insertar | Actualización [de Listado]}
en el nombre de la tabla
[para cada fila [cuando (condición)]]]
PLSQL BLOCK

       Ejemplo 1: Limite las horas de no trabajar para insertar datos en la base de datos
SQL> create or replace
    trigger securityEmp
    before insert on emp
    declare
    begin
if to_char (sysdate, ‘día’) en (‘jueves’, ‘sábado’, ‘domingo’)
    or to_number(to_char(sysdate,’hh24′))not between 8 and 18 then
rais_application_error (-20001, ‘no se puede insertar datos en las horas no laborales’);
    end if;
   end;
   /

Trigger created

Declaración de activación y valores variables de pseudo -recordado

Declaración de activación

:old

:new

Insert

Todos los campos están vacíos(null)

datos a insertar

Update

Actualizar el valor de la línea antes

Valor actualizado

delete

Eliminar el valor de la línea anterior

Todos los campos están vacíos(null)

Ejemplo2: confirmar datos (verificarempEl valor de modificación desalno es más bajo que el valor original)
SQL> create or replace trigger checkSal
    before update of sal on emp
    for each row
    declare
    begin
    if :new.sal<:old.sal then
Rais_Application_Error (-20001, ‘El salario después de la actualización es más pequeño que antes de la actualización);
    end if;
    end;
   /

Trigger created
Después de ejecutar, el resultado:
SQL> update emp set sal=260 where empno=7499;

update emp set sal=260 where empno=7499

ORA-20001: el salario después de la actualización es más pequeño que antes de la actualización
ORA-06512: en “Scott.Checksal”, línea 4
ORA-04088: El gatillo ‘scott.checksal’ es incorrecto

Resumen del gatillo
El activador se puede usar para
• Confirmación de datos
• Implementación de inspecciones de seguridad complejas
• Auditoría, operación de datos realizada en la tabla de seguimiento, etc.

Activador, proceso y función
•         Select * from user_triggers;
•         Select * from user_source;

Leave a Reply

Your email address will not be published. Required fields are marked *