Unas de las más usadas son:
NO_DATA_FOUND (cuando una orden tipo select no ha devuelto ningún valor)
TOO_MANY_ROWS (cuando una orden tipo select ha devuelto mas de una fila)
OTHERS THEN RAISE_APPLICATION_ERROR (para cualquier otro tipo de error desconocido)
En el formato distinguimos dos partes claramente, la cabecera donde esta el nombre del procedimiento y los parámetros y el cuerpo donde se situá un bloque anónimo.
Funciones: similares a los procedimientos pero con la función añadida de que pueden devolver valores.
Si subís varias lineas y veis el ejemplo de control de excepciones, podéis ver que hemos utilizado un atributo como DBMS_OUTPUT. Bien pues esto lo que nos permite es visualizar en pantalla los resultados, tanto excepciones como mensajes. Lo utilizamos porque PL/SQL no dispone de ordenes o sentencias que capturen datos introducidos por teclado, ni tampoco para visualizar datos en pantalla.
DBMS_OUTPUT.PUT_LINE nos permite visualizar en pantalla, pero para que funcione correctamente tenemos que poner el SET SERVEROUTPUT a ON
Si queremos que un bloque nos pida algún dato tenemos que anteponer el símbolo & delante de la variable, de esta forma cuando el bloque llegue a ese punto nos pedirá por pantalla el valor.Otra sentencia importante es la que nos permite visualizar los errores que hemos podido tener al crear el bloque o procedimiento. Esta sentencia es: show errors
Podemos agregar comentarios a nuestros bloques anteponiendo al comentario “/* <comentario> */”
Si queremos que el bloque anónimo se ejecute directamente cuando terminamos de crearlo debemos poner el símbolo / que, ademas de guardar el bloque en el buffer, lo ejecuta.
También podemos guardar los bloques anónimos en ficheros para poderlos ejecutar posteriormente. Para ello ejecutamos la siguiente sentencia:
save nombrefichero
Y para ejecutarlo primero tenemos que cargar el fichero en el buffer y para ello tenemos que ejecutar la siguiente sentencia:
get nombrefichero
Una vez cargado el fichero ejecutamos el bloque con la sentencia run nombrefichero.
O podemos hacer los dos pasos con una sola sentencia: start nombrefichero
Sin embargo para los procedimientos es totalmente distinto ya que al tener nombre se almacena automáticamente en la base de datos y para ejecutarlo tan solo tenemos que realizar la siguiente operación:
execute nombre_procedimiento(parámetros);
En el siguiente capitulo revisaremos todo lo que hemos visto en la introducción del PL/SQL, pero de una forma mas exhaustiva.