Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

error en oracle,podrian ayudarme se los agradeceria mucho!!!

Estas en el tema de error en oracle,podrian ayudarme se los agradeceria mucho!!! en el foro de Oracle en Foros del Web. Hola, estoy tratando de ejecutar un pequeño script para llenar unas tablas, pero me marca error al ejecutarlo, se compila y crea correctamente pero al ...
  #1 (permalink)  
Antiguo 15/02/2007, 11:08
 
Fecha de Ingreso: febrero-2007
Mensajes: 4
Antigüedad: 17 años, 2 meses
Puntos: 0
error en oracle,podrian ayudarme se los agradeceria mucho!!!

Hola,

estoy tratando de ejecutar un pequeño script para llenar unas tablas, pero me marca error al ejecutarlo, se compila y crea correctamente pero al ejecutarlo me marca el siguiente error:

ERROR at line 1:
ORA-06550: line 1, column 22:
PLS-00103: Encountered the symbol "SQL" when expecting one of the following:
<an identifier> <a double-quoted delimited-identifier> delete
exists prior <a single-quoted SQL string>
The symbol "<an identifier> was inserted before "SQL" to continue.


no se a que se deba, el pequeño script es este:

set serveroutput on size 500000;
set linesize 6000;
set serveroutput off;
create or replace PROCEDURE carga_grupo_uv is

id_materia_aux number(8);
descripcion_m varchar2(500);
clave_mat_aux varchar2(10);
levl_code varchar2(1);
id_nivel_aux number(8);
id_ejercicio_aux number(8);
id_depa_aux number(8);
dept_code_aux varchar2(4);
seq_gpo number(8);
c_term_code varchar2(6);
c_crn varchar2(5);
c_subj_code varchar2(4);
c_crse_numb varchar2(5);
c_seq_numb varchar2(3);
c_ssts_code varchar2(1);
c_activity_date date;
/*fecha date;*/
attr_code varchar2(4);

cursor c_ssbsect_uv is
select replica_stu.grupo_curso_seq.nextval,
ssbsect_term_code,
ssbsect_crn,
ssbsect_subj_code,
ssbsect_crse_numb,
ssbsect_seq_numb,
decode(ssbsect_ssts_code,'I','C',ssbsect_ssts_code ),
ssbsect_activity_date
from [email protected] where ssbsect_term_code >='200600';

cursor c_ssrattr_uv(c_term_code varchar2, c_crn number)is
select ssrattr_attr_code
from [email protected] where ssrattr_term_code = c_term_code and ssrattr_crn = c_crn;

begin
/*select sysdate into fecha from dual;*/
if c_ssbsect_uv%isopen then
close c_ssbsect_uv;
end if;
open c_ssbsect_uv;
loop
fetch c_ssbsect_uv into
seq_gpo,
c_term_code,
c_crn,
c_subj_code,
c_crse_numb,
c_seq_numb,
c_ssts_code,
c_activity_date;
exit when c_ssbsect_uv%notfound;
id_materia_aux := p_llenaexpedientes.obtiene_idmateria(c_subj_code, c_crse_numb);
if (id_materia_aux = 0)then
DBMS_OUTPUT.PUT_LINE('ERROR AL OBTENER MATERIA'||seq_gpo||c_subj_code||c_crse_numb);
else
id_nivel_aux := p_llenaexpedientes.obtiene_nivelescolar(c_term_cod e, c_crn);
if(id_nivel_aux = 0)then
DBMS_OUTPUT.PUT_LINE('ERROR AL OBTENER EL NIVEL ESCOLAR'||seq_gpo||c_term_code || c_crn);
else
id_ejercicio_aux := p_llenaexpedientes.obtiene_ejercicioacademico(c_te rm_code);
if(id_ejercicio_aux = 0)then
DBMS_OUTPUT.PUT_LINE('ERROR AL OBTENER EL EJERCICIO ACADEMICO'||seq_gpo||c_term_code);
else
id_depa_aux := p_llenaexpedientes.obtiene_deptoprofesor(c_subj_co de, c_crse_numb);
if(id_depa_aux = -1)then
DBMS_OUTPUT.PUT_LINE('ERROR AL OBTENER EL DEPARTAMENTO DEL PROFESOR'||seq_gpo||c_subj_code||c_crse_numb);
else
descripcion_m := p_llenaexpedientes.obtiene_descmateria(c_subj_code , c_crse_numb);
if(descripcion_m is null)then
DBMS_OUTPUT.PUT_LINE('ERROR AL OBTENER LA DESCIPCION DE LA MATERIA'||seq_gpo||c_subj_code||c_crse_numb);
else
insert into dm_grupo_curso values(seq_gpo,'30',id_materia_aux,id_nivel_aux,id _ejercicio_aux,
c_crn,descripcion_m,null,null,null,c_ssts_code,'A' ,SYSDATE,-1,c_activity_date,c_seq_numb,id_depa_aux);
commit;
end if;/*if descripcion de materia*/
end if; /*if departamento*/
end if; /*if ejercicio academico*/
end if; /*if nivel escolar*/
end if; /*if id_materia*/

if c_ssrattr_uv%isopen then
close c_ssrattr_uv;
end if;
open c_ssrattr_uv(c_term_code, c_crn);
loop
fetch c_ssrattr_uv into attr_code;
exit when c_ssrattr_uv%notfound;

insert into dm_grupo_atributos values (seq_gpo,attr_code);
commit;
end loop;/*loop c_ssrattr_uv*/
close c_ssrattr_uv;
end loop;/*loop c_ssbsect_uv*/
close c_ssbsect_uv;
commit;
end;
/
show errors


espero puedan ayudarme!!. Gracias. Saludos.
  #2 (permalink)  
Antiguo 15/02/2007, 15:16
Avatar de Linterns
Colaborador
 
Fecha de Ingreso: diciembre-2001
Mensajes: 2.799
Antigüedad: 22 años, 4 meses
Puntos: 11
Re: error en oracle,podrian ayudarme se los agradeceria mucho!!!

Para ser sincero estuve viendo tu codigo y no le encontre algun error; quiza el problema es en uno de los cursores donde estas haciendo referenciua a una columna con un nombre mal digitado0 o algo asi; eso es lo mas probable pero solo podras verificarlo tu que tienes ese ambiente.

Lo mejor es tomar solo bloques pequeños y ejecutarlos en el SQL he irlos incorporando al procedimiento.

Nota: para la proxima pon tu script en formato de codigo para que nos sea mas facil entenderlo.

Código PHP:
  set serveroutput on size 500000;
  
set linesize 6000;
  
set serveroutput off;
  
create or replace PROCEDURE carga_grupo_uv is
   
     id_materia_aux number
(8);
     
descripcion_m varchar2(500);
     
clave_mat_aux varchar2(10);
     
levl_code varchar2(1);
     
id_nivel_aux number(8);
     
id_ejercicio_aux number(8);
     
id_depa_aux number(8);
     
dept_code_aux varchar2(4);
     
seq_gpo number(8);
     
c_term_code varchar2(6);
     
c_crn varchar2(5);
     
c_subj_code varchar2(4);
     
c_crse_numb varchar2(5);
     
c_seq_numb varchar2(3);
     
c_ssts_code varchar2(1);
     
c_activity_date date;
     
attr_code varchar2(4);
   
  
cursor c_ssbsect_uv is
     select replica_stu
.grupo_curso_seq.nextval,
        
ssbsect_term_code,
        
ssbsect_crn,
        
ssbsect_subj_code,
        
ssbsect_crse_numb,
        
ssbsect_seq_numb,
        
decode(ssbsect_ssts_code,'I','C',ssbsect_ssts_code ),
        
ssbsect_activity_date
     from ssbsect
@info01.ruv.itesm.mx 
     where ssbsect_term_code 
>='200600';
   
  
cursor c_ssrattr_uv(c_term_code varchar2c_crn numberis
     select ssrattr_attr_code
     from ssrattr
@info01.ruv.itesm.mx 
     where ssrattr_term_code 
c_term_code 
       
and ssrattr_crn c_crn;
   
  
begin
   
  
if c_ssbsect_uv%isopen then
     close c_ssbsect_uv
;
  
end if;
   
  
open c_ssbsect_uv;
   
  
loop 
     fetch   c_ssbsect_uv into seq_gpo
c_term_codec_crnc_subj_code,
        
c_crse_numbc_seq_numbc_ssts_codec_activity_date;
     exit 
when c_ssbsect_uv%notfound;
   
     
id_materia_aux := p_llenaexpedientes.obtiene_idmateria(c_subj_codec_crse_numb);
     if (
id_materia_aux 0then
        DBMS_OUTPUT
.PUT_LINE('ERROR AL OBTENER MATERIA'||seq_gpo||c_subj_code||c_crse_numb);
     else
        
id_nivel_aux := p_llenaexpedientes.obtiene_nivelescolar(c_term_cod ec_crn);
        if(
id_nivel_aux 0)then
           DBMS_OUTPUT
.PUT_LINE('ERROR AL OBTENER EL NIVEL ESCOLAR'||seq_gpo||c_term_code || c_crn);
        else
           
id_ejercicio_aux := p_llenaexpedientes.obtiene_ejercicioacademico(c_te rm_code);
           if(
id_ejercicio_aux 0)then
              DBMS_OUTPUT
.PUT_LINE('ERROR AL OBTENER EL EJERCICIO ACADEMICO'||seq_gpo||c_term_code);
           else
              
id_depa_aux := p_llenaexpedientes.obtiene_deptoprofesor(c_subj_co dec_crse_numb);
              if(
id_depa_aux = -1)then
                 DBMS_OUTPUT
.PUT_LINE('ERROR AL OBTENER EL DEPARTAMENTO DEL PROFESOR'||seq_gpo||c_subj_code||c_crse_numb);
              else
                 
descripcion_m := p_llenaexpedientes.obtiene_descmateria(c_subj_code c_crse_numb);
                 if(
descripcion_m is nullthen
                    DBMS_OUTPUT
.PUT_LINE('ERROR AL OBTENER LA DESCIPCION DE LA MATERIA'||seq_gpo||c_subj_code||c_crse_numb);
                 else
                    
insert into dm_grupo_curso 
                    values
(seq_gpo,'30',id_materia_aux,id_nivel_aux,id _ejercicio_aux,
                    
c_crn,descripcion_m,null,null,null,c_ssts_code,'A' ,SYSDATE,-1,c_activity_date,c_seq_numb,id_depa_aux);
                    
commit;
                 
end if;/*if descripcion de materia*/
              
end if; /*if departamento*/
           
end if; /*if ejercicio academico*/
        
end if; /*if nivel escolar*/
     
end if; /*if id_materia*/
   
     
if c_ssrattr_uv%isopen then
        close c_ssrattr_uv
;
     
end if;
   
     
open c_ssrattr_uv(c_term_codec_crn);
   
     
loop
        fetch c_ssrattr_uv into attr_code
;
        exit 
when c_ssrattr_uv%notfound;
        
insert into dm_grupo_atributos values (seq_gpo,attr_code);
        
commit;
     
end loop;/*loop c_ssrattr_uv*/
     
close c_ssrattr_uv;
  
end loop;/*loop c_ssbsect_uv*/
  
close c_ssbsect_uv;
  
commit;
  
end;
  / 
__________________
Bien se puede recibir una puñalada sin adulación,
pero rara vez se recibe una adulación sin puñalada
** ***
  #3 (permalink)  
Antiguo 15/02/2007, 16:07
 
Fecha de Ingreso: febrero-2007
Mensajes: 4
Antigüedad: 17 años, 2 meses
Puntos: 0
Sonrisa Re: error en oracle,podrian ayudarme se los agradeceria mucho!!!

muchas Gracias
  #4 (permalink)  
Antiguo 15/02/2007, 19:36
Avatar de kikolice  
Fecha de Ingreso: marzo-2004
Mensajes: 1.510
Antigüedad: 20 años, 1 mes
Puntos: 7
Re: error en oracle,podrian ayudarme se los agradeceria mucho!!!

if c_ssbsect_uv%isopen then
close c_ssbsect_uv;
end if;

if c_ssrattr_uv%isopen then
close c_ssrattr_uv;
end if;

segun mi teoria eso es completamente inecesario

id_materia_aux := p_llenaexpedientes.obtiene_idmateria();
if (id_materia_aux = 0) then

puedes eliminar facilmente el uso de esas variables con

if (p_llenaexpedientes.obtiene_idmateria()=0) then

nunca me ha gustado el uso del open, fetch, close, siempre uso for y me evito crear variables

for cur_xxx in c_ssbsect_uv loop

cur_xxx.campo

espero me entiendan
__________________
Blogzote.com :-) Mi blog
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:22.