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;