Oracle - Errores en con consultas y bloque de oracle

 
Vista:

Errores en con consultas y bloque de oracle

Publicado por gpoveda (1 intervención) el 26/04/2019 02:44:51
Buenas, estoy recibiendo estos dos errores al ejecutar mi consulta, y ya no se que pueda ser.

Error(24,1): PLS-00103: Se ha encontrado el símbolo "EXECUTE"
Error(29,18): PLS-00103: Se ha encontrado el símbolo "ON" cuando se esperaba uno de los siguientes: := . ( @ % ; not null range default character

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
SET ServerOutput ON;
SET VERIFY OFF;
CREATE OR REPLACE PROCEDURE desglose_cambio(
importe NUMBER)
AS
cambio NATURAL := importe;
moneda NATURAL;
v_uni_billete NATURAL;
BEGIN
DBMS_OUTPUT.PUT_LINE('***** DESGLOSE DE: ' || importe );
WHILE cambio > 0 LOOP
IF cambio >= 10000 THEN
moneda := 10000;
ELSIF cambio >= 5000 THEN
moneda := 5000;
ELSIF cambio >= 2000 THEN
moneda := 2000;
END IF;
v_uni_billete := TRUNC(cambio / moneda);
DBMS_OUTPUT.PUT_LINE(v_uni_billete ||
' Billetes de: ' || moneda || ' Colones ');
cambio := MOD(cambio, moneda);
END LOOP;
END desglose_cambio;
 
execute desglose_cambio(17000);
 
 
 
 
SET ServerOutput ON;
SET VERIFY OFF;
CREATE OR REPLACE PROCEDURE desglosecambio2(
importe NUMBER)
AS
cambio NATURAL := importe;
moneda NATURAL;
v_uni_billete NATURAL;
BEGIN
DBMS_OUTPUT.PUT_LINE('*** DESGLOSE DE: ' || importe );
WHILE cambio > 0 LOOP
IF cambio >= 100 THEN
moneda := 100;
ELSIF cambio >= 20 THEN
moneda := 20;
END IF;
v_uni_billete := TRUNC(cambio / moneda);
DBMS_OUTPUT.PUT_LINE(v_uni_billete ||
' Billetes de: ' || moneda || ' Dolares ');
cambio := MOD(cambio, moneda);
END LOOP;
END desglosecambio2;
 
execute desglosecambio2(640);
 
create table cuenta (
id_cuenta number,
saldo_colones number,
saldo_dolares number
);
 
 
  insert into cuenta values(1,100000,1000);
 
 
 
declare
 
  numero_cuenta number:= &numero_cuenta;
  monto_retirar number := &monto_retirar;
  opcion number := &1colones_2dolares;
  saldo_c number;
  saldo_d number;
   cursor colones  is select saldo_colones from cuenta where id_cuenta = numero_cuenta;
   cursor dolares is select saldo_dolares from cuenta where id_cuenta = numero_cuenta;
begin
 
  open colones;
  open dolares;
 
  fetch colones into saldo_c;
  fetch dolares into saldo_d;
 
  if opcion = 1 then
    if monto_retirar >= saldo_c then
      dbms_output.put_line('saldo insuficiente');
      else
      desglose_cambio(monto_retirar);
    end if;
  end if;
 
  if opcion = 2 then
    if monto_retirar >= saldo_d then
      dbms_output.put_line('saldo insuficiente');
      else
      desglosecambio2(monto_retirar);
    end if;
  end if;
 
end;
/
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de gilman
Val: 117
Bronce
Ha mantenido su posición en Oracle (en relación al último mes)
Gráfica de Oracle

Errores en con consultas y bloque de oracle

Publicado por gilman (52 intervenciones) el 26/04/2019 08:40:35
Si no me equivoco está en que cada bloque de definición de los procedures debe terminar con /, si no Oracle cree que hasta que no lo encuentra el código pertenece al Procedure.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar