Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle程序没有';t编译;给出一个“答案”;遇到符号;当期待时……”;错误_Oracle_Procedure - Fatal编程技术网

Oracle程序没有';t编译;给出一个“答案”;遇到符号;当期待时……”;错误

Oracle程序没有';t编译;给出一个“答案”;遇到符号;当期待时……”;错误,oracle,procedure,Oracle,Procedure,编译上述函数时,出现以下错误: create or replace PROCEDURE ResumenActividadDiaria(Fecha DATE) AS CURSOR cur_trans IS SELECT t.idslot, t.tipotransaccion, t.transacciongeneral, t.valortransaccion, s.fila, s.columna FROM transaccion t, slot s WHE

编译上述函数时,出现以下错误:

create or replace PROCEDURE ResumenActividadDiaria(Fecha DATE) AS
  CURSOR cur_trans IS
  SELECT t.idslot, t.tipotransaccion, t.transacciongeneral, t.valortransaccion,
         s.fila, s.columna
    FROM  transaccion t, slot s
    WHERE t.idslot = s.idslot AND
          t.transacciongeneral in (1,3) AND
          t.fechacreacion = Fecha
    ORDER BY s.fila, s.columna, t.tipotransaccion, t.transacciongeneral;            

  rs_trans cur_trans%ROWTYPE;       

  vlIdSlot NUMBER(10);
  vlTipoTransaccion NUMBER(1);
  vlTransaccionGeneral NUMBER(1);
  vlValorTransaccion NUMBER(10);
  vlFila NUMBER(2);
  vlColumna NUMBER(2);     
BEGIN
  dbms_output.put_line('Fecha ' );
  dbms_output.put_line('                          ------------------------------------------------------');
  OPEN cur_trans;

  FETCH cur_trans INTO rs_trans;
  WHILE cur_trans%found 
  LOOP
    FETCH cur_trans INTO rs_trans;
    dbms_output.put_line('Id         :' || rs_trans.vlIdSlot);
    dbms_output.put_line('Fila       :' || rs_trans.vlFila);
    dbms_output.put_line('Columna    :' || rs_trans.vlColumna);

    IF vlTransaccionGeneral = 1 THEN                
      IF vlTipoTransaccion = 1 THEN
        dbms_output.put_line('Billetes I :' || rs_trans.vlValorTransaccion);
      END IF;

      IF vlTipoTransaccion = 2 THEN
        dbms_output.put_line('Monedas  I :' || rs_trans.vlValorTransaccion);
      END IF;

      IF vlTipoTransaccion = 3 THEN
        dbms_output.put_line('Premios  I :' || rs_trans.vlValorTransaccion);
      END IF;

      IF vlTipoTransaccion = 4 THEN
        dbms_output.put_line('Creditos I :' || rs_trans.vlValorTransaccion);
      END IF;
    END IF;

    IF vlTransaccionGeneral = 3 THEN                
      IF vlTipoTransaccion = 1 THEN
        dbms_output.put_line('Billetes F :' || rs_trans.vlValorTransaccion);
      END IF;

      IF vlTipoTransaccion = 2 THEN
        dbms_output.put_line('Monedas  F :' || rs_trans.vlValorTransaccion);
      END IF;

      IF vlTipoTransaccion = 3 THEN
        dbms_output.put_line('Premios  F :' || rs_trans.vlValorTransaccion);
      END IF;

      IF vlTipoTransaccion = 4 THEN
        dbms_output.put_line('Creditos F :' || rs_trans.vlValorTransaccion);
      END IF;
    END IF; 
  END LOOP;

  CLOSE cur_trans;  
END;
请帮我解决这个问题

Error(58,4): PLS-00103: Encountered the symbol ";" when expecting one of the following:     loop 
使用
ELSIF
代替重复的
IF
用法。它使代码可读性和生活更容易。
PS:未测试。

该错误似乎并非来自该程序;所有的<代码>结束<代码>看起来正确,第58行在第二个<代码>的中间,如果节。您是否在脚本中创建了多个内容?(不过还有其他错误;您似乎将
vl*
变量(您从未设置过)与
rs\u trans
列混合在一起。这似乎是一个风格问题,而不是与OP得到的错误有关。另外,为什么不使用
案例
LOOP
    FETCH cur_trans INTO rs_trans;
    dbms_output.put_line('Id         :' || rs_trans.vlIdSlot);
    dbms_output.put_line('Fila       :' || rs_trans.vlFila);
    dbms_output.put_line('Columna    :' || rs_trans.vlColumna);
    IF vlTransaccionGeneral = 1 THEN                
        IF vlTipoTransaccion = 1 THEN
            dbms_output.put_line('Billetes I :' || rs_trans.vlValorTransaccion);
        ELSIF vlTipoTransaccion = 2 THEN
            dbms_output.put_line('Monedas  I :' || rs_trans.vlValorTransaccion);
        ELSIF vlTipoTransaccion = 3 THEN
            dbms_output.put_line('Premios  I :' || rs_trans.vlValorTransaccion);
        ELSIF vlTipoTransaccion = 4 THEN
            dbms_output.put_line('Creditos I :' || rs_trans.vlValorTransaccion);
        END IF;
    ELSIF vlTransaccionGeneral = 3 THEN                
        IF vlTipoTransaccion = 1 THEN
            dbms_output.put_line('Billetes F :' || rs_trans.vlValorTransaccion);
        ELSIF vlTipoTransaccion = 2 THEN
            dbms_output.put_line('Monedas  F :' || rs_trans.vlValorTransaccion);
        ELSIF vlTipoTransaccion = 3 THEN
            dbms_output.put_line('Premios  F :' || rs_trans.vlValorTransaccion);
        ELSIF vlTipoTransaccion = 4 THEN
            dbms_output.put_line('Creditos F :' || rs_trans.vlValorTransaccion);
        END IF; 
    END IF;
END LOOP;