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

ayuda para depurar

Estas en el tema de ayuda para depurar en el foro de Oracle en Foros del Web. hola chicos perdnonar por molestar tengo este codigo y no se terminarlo de depurar SQL> CREATE OR REPLACE PROCEDURE PONCALIFICACION 2 IS 3 CURSOR C1 ...
  #1 (permalink)  
Antiguo 22/03/2010, 10:42
 
Fecha de Ingreso: marzo-2010
Mensajes: 2
Antigüedad: 14 años
Puntos: 0
ayuda para depurar

hola chicos perdnonar por molestar tengo este codigo y no se terminarlo de depurar

SQL> CREATE OR REPLACE PROCEDURE PONCALIFICACION
2 IS
3 CURSOR C1 IS SELECT CALIFICACION FROM MEDICOS FOR UPDATE;
4 CURSOR C2 IS SELECT COUNT(*) FROM MEDICOS WHERE CALILFICACION='NT';
5 CURSOR C3 IS SELECT COUNT(*) FROM MEDICOS WHERE NOTA ='10';
6 R1 C1%ROWTYPE;
7 R2 C2%ROWTYPE;
8 R3 C3%ROWTYPE;
9 BEGIN
10 OPEN C1;
11 OPEN C2;
12 OPEN C3;
13 LOOP;
14 FETCH C1 INTO R1;
15 FETCH C2 INTO R2;
16 FETCH C3 INTO R3;
17 LOOP
18 IF NOTA_CARRERA BETWEEN '0' AND '4.9' THEN
19 UPDATE NEDICOS SET CALIFICACION = 'INS' WHERE CURRENT OF C1;
20 END IF;
21 IF NOTA_CARRERA BETWEEN '5' AND '5.9' THEN
22 UPDATE NEDICOS SET CALIFICACION = 'SF' WHERE CURRENT OF C1;
23 END IF;
24 IF NOTA_CARRERA BETWEEN '6' AND '6.9' THEN
25 UPDATE NEDICOS SET CALIFICACION = 'BI' WHERE CURRENT OF C1;
26 END IF;
27 IF NOTA_CARRERA BETWEEN '7' AND '8.9' THEN
28 UPDATE NEDICOS SET CALIFICACION = 'NT' WHERE CURRENT OF C1;
29 END IF;
30 IF NOTA_CARRERA BETWEEN '9' AND '10' THEN
31 UPDATE NEDICOS SET CALIFICACION = 'SB' WHERE CURRENT OF C1;END IF;
32 END LOOP;DBMS_OUTPUT.PUT_LINE('NUMERO DE NOTABLES'|| R2.CALIFICACION);
33 DBMS_OUTPUT.PUT_LINE('NUMERO DE 10'|| R3.NOTA_CARRERA);
34 CLOSE C1;
35 CLOSE C2;
36 CLOSE C3;
37 END;
38 /

Advertencia: Procedimiento creado con errores de compilación.

SQL> SHOW ERRORS
Errores para PROCEDURE PONCALIFICACION:

LINE/COL ERROR
-------- -----------------------------------------------------------------
13/5 PLS-00103: Se ha encontrado el símbolo ";" cuando se esperaba uno
de los siguientes:
begin case declare exit for goto if loop mod null pragma
raise return select update while with <an identifier>
<a double-quoted delimited-identifier> <a bind variable> <<
close current delete fetch lock insert open rollback
savepoint set sql execute commit forall merge pipe
El símbolo "exit" ha sido sustituido por ";" para continuar.

37/4 PLS-00103: Se ha encontrado el símbolo ";" cuando se esperaba uno
de los siguientes:

LINE/COL ERROR
-------- -----------------------------------------------------------------
loop


que esta mal¿?

GRACIAS
  #2 (permalink)  
Antiguo 22/03/2010, 15:46
 
Fecha de Ingreso: enero-2010
Mensajes: 29
Antigüedad: 14 años, 2 meses
Puntos: 3
Respuesta: ayuda para depurar

> 13 LOOP;

Usted debe eliminar el punto y coma.
  #3 (permalink)  
Antiguo 23/03/2010, 01:53
 
Fecha de Ingreso: junio-2007
Mensajes: 891
Antigüedad: 16 años, 10 meses
Puntos: 43
Respuesta: ayuda para depurar

Puffffffffffffffffffffffffff, pufffff, puffffffffff.

¿ que está mal ?, pues casi todo.

A bote pronto :

Aparte de que te sobra el punto y coma que ha apuntado yong321, te faltan dos END LOOP y tres EXIT WHEN.

Si haces un loop y no le dices cuando salir, te va a estar dando vueltas por toda la eternidad.

¿ De donde sacas NOTA_CARRERA ?

Que mania teneis de usar el OPEN, el FOR VARIABLE IN CURSOR LOOP es mejor y tecleas menos. De esta manera te olvidas del open y del close.........

No sé que es CURRENT OF C1, nunca lo he visto.

Etiquetas: depurar
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 05:02.