2015-01-22 3 views
0

Я борюсь за этот запрос и не могу понять, почему Oracle не компилирует следующую хранимую процедуру, ошибка PL/SQL: ORA-00933: comando SQL terminato erroneamente, на линии, содержащей `оТ storico_dipendente AS,ORACLE хранимой процедуры не компилируется

резные

заранее спасибо

Paolo`

create or replace 
    PROCEDURE AVERAGE_VRE (
       p_refDate IN DATE , 
      p_level IN VARCHAR2) 
    /* 
     Procedure Name: AVERAGE_VRE 
     Author:   Paolo URSINI 
     Date:   21 jan 2015 
     Description: this procedure compute the average amount from PAYROLL table 
         inserting into PAYROLL_CALCOLATO table. 
         The assumption is that every wage type is equally divided 
         by ALL THE ACTIVE EMPLOYEE 
    */ 
    IS 
     FTE decimal(8,3) := 0; 

    BEGIN  
     SELECT sum(percentuale_parttime) into FTE 
     from storico_dipendente 
     where TRUNC(data_inizio_variazione) <= p_refDate 
      and TRUNC(data_fine_variazione) >= p_refDate 
      and flag_status = 1;  

     INSERT INTO PAYROLL_CALCOLATO (
      MATRICOLA, 
      DATA_PY, 
      IMPORTO, 
      ID_CODICE_VOCE, 
      TM_INS, 
      TM_UPD, 
      ID_GRUPPO_DATI) 
      SELECT 
       anag.MATRICOLA, voci.DATA_PY, (voci.sumImporto/FTE), 
       voci.ID_CODICE_VOCE, 
       SYSDATE, 
       SYSDATE, 
       2   
      FROM storico_dipendente AS anag, 
      (
      SELECT DATA_PY, ID_CODICE_VOCE, sum(IMPORTO_PY) sumImporto 
       FROM PAYROLL 
       WHERE TRUNC(DATA_PY) = p_refDate 
       GROUP BY DATA_PY, ID_CODICE_VOCE 
     ) AS voci   
     where TRUNC(data_inizio_variazione) <= p_refDate 
      and TRUNC(data_fine_variazione) >= p_refDate 
      and flag_status = 1 and cod_livello = p_level; 

    END AVERAGE_VRE; 

ответ

3

Удалите "АС" из двух таблиц/подзапросов псевдонимов. Хотя Oracle позволяет использовать AS с псевдонимами столбцов, это недопустимый синтаксис для псевдонимов таблиц.

+0

Спасибо, нашли то же самое решение –

0

SOLVED, проблема была в псевдониме с ключевым словом AS.

CREATE OR REPLACE PROCEDURE AVERAGE_VRE (
      p_refDate IN DATE , 
     p_level IN VARCHAR2) 
/* 
    Procedure Name: AVERAGE_VRE 
    Author:   Paolo URSINI 
    Date:   21 jan 2015 
    Description: this procedure compute the average amount from PAYROLL table 
        inserting into PAYROLL_CALCOLATO table. 
        The assumption is that every wage type is equally divided 
        by ALL THE ACTIVE EMPLOYEE 
*/ 
IS 
    FTE decimal(8,3) := 0; 

BEGIN  
    SELECT sum(percentuale_parttime) into FTE 
    from storico_dipendente 
    where TRUNC(data_inizio_variazione) <= p_refDate 
     and TRUNC(data_fine_variazione) >= p_refDate 
     and flag_status = 1 and cod_livello = p_level;  

    INSERT INTO PAYROLL_CALCOLATO (
     MATRICOLA , 
     DATA_PY, 
     IMPORTO, 
     ID_CODICE_VOCE, 
     TM_INS, 
     TM_UPD, 
     ID_GRUPPO_DATI) 
     SELECT 
      anag.MATRICOLA ,voci.DATA_PY, (voci.sumImporto/FTE), 
      voci.ID_CODICE_VOCE, 
      SYSDATE, 
      SYSDATE, 
      2   
     FROM storico_dipendente anag, 
       (
       SELECT DATA_PY, ID_CODICE_VOCE, sum(IMPORTO_PY) sumImporto 
        FROM PAYROLL 
        WHERE TRUNC(DATA_PY) = p_refDate 
        GROUP BY DATA_PY, ID_CODICE_VOCE 
      ) voci    
    where TRUNC(data_inizio_variazione) <= p_refDate 
     and TRUNC(data_fine_variazione) >= p_refDate 
     and flag_status = 1 and cod_livello = p_level; 

END AVERAGE_VRE; 
Смежные вопросы