ORA-00942: table or view does not exist

17/12/2010

0

Pessoal bom dia. 

Estou montando uma procedure e está aparecendo o erro ORA-00942: table or view does not exist. O erro é nas linhas onde realiza o insert 
INSERT INTO TB_AJUSTA_PARAMETRO VALUE ( SELECT * FROM V$PARAMETER ); 
INSERT INTO TB_AJUSTA_INSTANCIA VALUE ( SELECT * FROM V$INSTANCE ); 
INSERT INTO TB_AJUSTA_HIST_ACTIVE VALUE ( SELECT * FROM DBA_HIST_ACTIVE_SESS_HISTORY ); . 

Agora se eu executar qualquer um dos insert fora da procedure, irá funcionar perfeitamente. 
Se alguém puder me ajudar ficarei muito agradecido. 
 

create or replace 
PROCEDURE SP_AJUSTA_PARAMETROS (P_RETORNO VARCHAR2) IS 

  V_HOUR          VARCHAR2(10); 
  V_STATE         VARCHAR2(10); 
  V_COUNT         VARCHAR2(100); 

BEGIN 
  
  INSERT INTO TB_AJUSTA_PARAMETRO   VALUE ( SELECT * FROM V$PARAMETER ); 
  INSERT INTO TB_AJUSTA_INSTANCIA   VALUE ( SELECT * FROM V$INSTANCE ); 
  INSERT INTO TB_AJUSTA_HIST_ACTIVE VALUE ( SELECT * FROM DBA_HIST_ACTIVE_SESS_HISTORY ); 
  
  FOR R_HIST IN ( 
      SELECT TO_CHAR(TRUNC((SAMPLE_TIME), 'HH'), 'HH24:MI') AS "HOUR", 
             STATE, 
             COUNT(*)/360   AS "COUNT" 
        FROM ( 
                SELECT SAMPLE_TIME, 
                       SAMPLE_ID, 
                       CASE WHEN SESSION_STATE = 'ON CPU'  THEN 'CPU' 
                            WHEN SESSION_STATE = 'WAITING' AND WAIT_CLASS IN('User I/O') THEN 'IO' 
                            WHEN SESSION_STATE = 'WAITING'   AND WAIT_CLASS IN('Cluster')  THEN 'CLUSTER' 
                            ELSE 'WAIT' 
                       END STATE 
                  FROM TB_AJUSTA_HIST_ACTIVE 
                 WHERE SESSION_TYPE IN('FOREGROUND') 
                   AND SAMPLE_TIME BETWEEN TRUNC(SYSDATE, 'HH') -25/24 
                   AND TRUNC(SYSDATE, 'HH') -1/24 
             ) 
       GROUP BY TRUNC((SAMPLE_TIME), 'HH'), STATE 
       ORDER BY TRUNC((SAMPLE_TIME), 'HH')  
  ) 
  LOOP 
    
    V_HOUR          := R_HIST."HOUR"; 
    V_STATE         := R_HIST.STATE; 
    V_COUNT         := R_HIST."COUNT"; 

  END LOOP; 
  
  
  COMMIT; 

EXCEPTION 
  WHEN OTHERS THEN 
    
    NULL; 
  
END;
Hudson Campos

Hudson Campos

Responder

Posts

21/02/2011

Volnei Volff

Olá.

Verifica se o owner da tabela é o mesmo que tu executa a procedure e não esquece de commitar o insert.

Se mesmo assim não der responde aí.

Abraço.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar