logo
MyWebStudies - Página de inicio
INGRESAR

REGISTRARSE
Buscador

Manejo de objetos inválidos

Selecciona el idioma :

Este video solo está disponible para los alumnos que han adquirido el curso

Manejo de objetos inválidos


Ya sabemos que los procedimientos PL/SQL almacenados son código compilado y localizado en el DD como objetos de tipo PL/SQL. Pues vamos a escribir un procedimiento con algún error de sintaxis, para observar cómo Oracle maneja esos errores, cómo podemos identificar los objetos que tengan errores y STATUS INVALID.

Primero veremos qué son los procedimientos. Un procedimiento o función está constituido por un conjunto de sentencias SQL y PL/SQL lógicamente agrupados para realizar una tarea especifica. Los procedimientos almacenados, constituyen código PL/SQL que es compilado y almacenado en las tablas del sistema de la base de datos Oracle.

Los procedimientos tienen determinadas reglas de sintaxis, que vamos a ir viendo a medida que lo definamos. Entonces escribimos:

  • CREATE OR REPLACE PROCEDURE P_MAL(PAR1 IN VARCHAR2, PAR2 ON NUMBER) IS BEGIN NULL, END

Entre paréntesis definimos los parámetros del procedimiento, y para nuestro ejemplo, escribimos un argumento no válido (ON) cuando definimos el segundo parámetro. Entonces, al presionar Intro, Oracle nos mostrará un mensaje, indicándonos que se ha creado un procedimiento con errores de compilación.

En Oracle, podemos ver en detalle lo ocurrido, tenemos una vista donde se muestran los objeto con errores, y una pequeña pero muy útil descripción de dicho error. Para acceder a ella debemos escribir:

  • SHOW ERRORS

Presionamos Intro: Y entonces Oracle nos informa que hay errores en el procedimiento P_MAL, que fue el que recién creamos. Y debajo nos muestra dónde está el error, que en nuestro caso es en el modificador ON, que no aplica para cuando definimos los parámetros.

Oracle, también nos provee de una tabla que nos devuelve algunas propiedades de los objetos. Nos referimos a la tabla DBA_OBJECTS. Si accedemos a esa tabla, limitando su salida a los registros e objetos con STATUS igual a INVALID, debería aparecer como resultado nuestro procedimiento P_MAL, toda vez que tiene errores de compilación, y Oracle lo guarda con su propiedad STATUS, con valor INVALID:

  • SELECT OBJECT_NAME FROM DBA_OBJECTS WHERE STATUS=[INVALID]

Presionamos Intro y podemos ver que el procedimiento P_MAL, es el único objeto en la base de datos que presenta status INVALID. Veamos ahora qué sucede si intentamos modificar este procedimiento mediante una compilación. Para ello escribimos:

  • ALTER PROCEDURE P_MAL COMPILE

Presionamos Intro, y Oracle nos muestra un mensaje advirtiéndonos que se ha modificado el procedimiento, pero con errores de compilación. Es un error, que Oracle no ha podido solucionar de forma automática, de manera que si queremos arreglarlo, debemos hacerlo de forma manual. En nuestro caso, es un error muy sencillo de arreglar, ya que solo debemos poner un modificador correcto en lugar de la pa


manejo objetos invalidos

Publicaciones Recientes de oracle dba

¿Hay algún error o mejora?

¿Dónde está el error?

¿Cúal es el error?