Procedimientos


Los procedimientos quedan almacenados en la base de datos a diferencia de los bloques anónimos que se almacenaban en el buffer.  Algo que nos diferencia los bloques anónimos de los procedimientos o funciones es que en los procedimientos o funciones no se pueden utilizar variables de sustitución.

Ejemplo de un procedimiento que nos muestre los datos de un usuario:

CREATE OR REPLACE PROCEDURE ver_usuario(nomusu VARCHAR2)
IS
   NIFusu   VARCHAR2(10);
   Domusu   VARCHAR2(10);
BEGIN
   select nif, domicilio into NIFusu,Domusu from usuario where nombre=nomusu;
   DBMS_OUTPUT.PUT_LINE('Nombre:'||nomusu|| 'NIF:' ||NIFusu|| 'Domicilio' ||Domusu);
EXCEPTION
   WHEN NO_DATA_FOUND THEN
      DBMS_OUTPUT.PUT_LINE('No hemos encontrado al usuario || nomusu);
END;
/

Si el compilador detecta errores nos saldrá un mensaje como este: “Procedimiento creado con errores de compilación”. Para ver estos errores tenemos la orden SHOW ERRORS.
Al tener almacenado el procedimiento en la base de datos, este puede ser llamado por cualquier usuario que tenga los permisos oportunos. Para invocar un procedimiento utilizamos la orden EXECUTE,

Para invocar al procedimiento que hemos creado antes tendríamos que ejecutar la siguiente orden:

EXECUTE ver_usuario('Luis');
Pero también podemos invocarlo desde un bloque PL/SQL de ls siguiente forma:
BEGIN
   ver_usuario('Luis');
END;
.
Como en cualquier lenguaje, podemos agregar comentarios a nuestros procedimientos de la siguiente forma:
- - para comentar en una sola linea
/* */ para varias lineas.