Como pregunto si existe un stored procedure?

Francisco
21 de Julio del 2004
En sql server es "if exist" en oracle como es? por ej: if exists (select * from ALL_OBJECTS where OBJECT_NAME = 'NOMBRE_STORED') drop procedure NOMBRE_STORED
pero el if exist no funciona, necesito la funcion de oracle para saber si existe un stored, desde ya muchas gracias y espero me entiendan

ivg182
21 de Julio del 2004
En pl/sql existe el sql%notfound que te dice si una sentencia sql no ha devuelto ningún registro. También puedes utilizar la exception "when_no_data_found". En un prodediciento antes del "end" puedes poner la línea "exception when_no_data_found then" y a continuación la condición que debe cumplir cuando el registro no exista. Si recupera registros (en una select con un procedure debes poner un insert into antes del from y guardar el valor o valores que saques de la consulta) sólo tienes que poner la condición despues de la sentencia sql.
Espero haberte ayudado.

Un saludo, Isabel.

Rafa
21 de Julio del 2004
Puedes hacer una consulta sobre la vista ALL_SOURCE. Esta vista tiene 5 campos: OWNER, NAME, TYPE, LINE y TEXT.

OWNER contiene el nombre del esquema en el que está alojado el procedimiento o paquete, NAME es el nombre del procedimiento, TYPE es el tipo (ej. PACKAGE, PROCEDURE), LINE contiene el número de línea y TEXT el texto de esa línea.

SELECT *
FROM ALL_SOURCE
WHERE OWNER = \'MIESQUEMA\'
AND TYPE = \'PROCEDURE\'
AND NAME = \'MIPROCEDIMIENTO

Esta select devolverá todo el contenido del procedimiento, por ejemplo.

Salu2.