La Web del Programador: Comunidad de Programadores
 
    Pregunta:  28011 - ERROR INTERNO DE ORACLE PLS-00801
Autor:  Reinaldo Figueroa
A ejecutar este INSERT desde SQL*Plus se ejecuta sin problemas, pero al tratar de crearlo como un STORED PROCEDURE me genera el error: PLS-00801: internal error [74807]

La instruccion es:create or replace PROCEDURE SP_INDOTEL1 AS
begin
begin
delete co_indotel1;
commit;
end;

begin
insert into co_indotel1 select provincia, sum(porciento) porciento, caso, sum(recibidas) recibidas,
round(sum(solu)/sum(recibidas)*100,2) solucionadas
from (select total, caso, provincia, estatus, recibidas,
round(recibidas/total*100,2) porciento,solu
from (select count(*) TOTAL
from sw_case s,co_tipo_caso c,city ci,state sta,
territorial_unit tu,street str, address_range ad,area_id ar,
sw_sp_account swsp
where s.cotipocasoid=c.cotipocasoid
and s.SWSPACCOUNTID=swsp.swspaccountid
and ar.name=swsp.cozipcode
and ci.state_oid=sta.oid
and tu.city_oid=ci.oid
and str.tu_oid=tu.oid

  Respuesta:  JATMES MEN
BUSCA UN ERROR ASI
REG_FECHA.Fech2 => FEHAFIN

Y LO MODIFICAS ASI
REG_FECHA.Fech2 >= FEHAFIN

  Respuesta:  Reinaldo Figueroa
Lo que sucedia es que, habia un nombre de identificador duplicado. Uno de los alias de los subqueries internos era igual al nombre de un objeto ya existente y por eso no podia crearlo en el diccionario de datos. No es un "bug", por eso es que desde SQL*Plus se ejecutaba sin problemas. La solucion fue cambiar los identificadores de los subqueries y el problema quedo resuelto.

Gracias, de todos modos.

  Respuesta:  Favio fernandez
man... el error que te tira el un bug de oracle... bajate de la pagina de oracle el fix de ese error o bajate la ultima version de patch para la version de base que tengas vos ya que de ahi es el error...
tenes que fijarte que sea de base y no de SQL el patch porque el stored procedure es un procedimiento de base mientras que el insert comun es un procedimiento de sql... es decir... te lo resuelve en sql pero no lo podes resolver desde la base porque es ahi donde tenes el error