BLOQUES PL-SQL
SUBPROGRAMAS
PROCEDIMIENTOS
Procedimientos bloques de pl/sql utilizados para
realizar o ejecutar una acción específica
Los procedimientos no retornan ningún valor. Sintaxis:
CREATE {OR REPLACE} PROCEDURE nombre (tipo_dato p1,… ) IS
<sección DECLARE>
BEGIN
.
{EXCEPTION}
.
END;
Ejemplos
Insertar una nueva categoría ( tipo de producto), seleccionando el máximo
valor de la columna tipoprod_id + 1
CREATE OR REPLACE PROCEDURE insertacategoria IS
maximo number;
BEGIN
select max(tipoprod_id)+1 into maximo from tipoproducto;
insert into tipoproducto values(maximo,'CONFITERIA');
END;
/
Como usar el sp


@nom_archivo.sql
--compilar
Exec nom_sp(parámetros si hay);
SQL> @proc1.sql
Procedimiento creado.
SQL> exec insertacategoria;
Procedimiento PL/SQL terminado correctamente.
Otra probabilidad podría ser ejecutar el procedimiento desde
dentrol de un bloque pl
FUNCIONES
INTRODUCCION
Que es una función



Una función es un conjunto de instrucciones en un
bloque PL/SQL que puede ser llamado utilizando el
nombre con le cual fue creado
Retornan siempre un valor en el nombre de la
función al sitio desde donde fue llamada
Una función es utilizada por lo general para
realizar algún tipo de cálculo
SINTAXIS
CREATE [OR REPLACE] FUNCTION name [(param [IN]
datatype) . . .] RETURN datatype
[IS|AS]
Sección de daclaración de variables;
BEGIN
.
.
[excepcion]
.
END;
Ejemplo
Elabore una función que verifique si el salario esta entre un rango
CREATE OR REPLACE FUNCTION sal_ok (salary REAL, ci VARCHAR2) RETURN
NUMBER IS
min_sal REAL;
max_sal REAL;
BEGIN
SELECT promingresos, promingresosmin INTO max_sal, min_sal FROM cliente
WHERE cedula = ci;
IF ((salary >= min_sal) AND (salary <= max_sal)) THEN
RETURN 1;
ELSE
RETURN 0;
end if;
END;
/
1
En este ejemplo la instrucción return RETORNA un
si el salario es
>=al mínimo salario Y SI el salario es >= que el salario máximo. Caso
contrario retorna 0
Uso de la función











SQL> @fun1.sql
--compila la función
Función creada
Define una variable del siguiente modo:
SQL>var xvalor number;
SQL> exec :xvalor:=sal_ok(800,'0501583280');
Procedimiento PL/SQL terminado correctamente.
SQL> print xvalor
XVALOR
---------0
SQL>
Otra probabilidad podría ser ejecutar la
función desde dentrol de un bloque pl
Descargar

PROCEDIMIENTOS ALMACENADOS