Error Procedure Oracle

Publicado en 'Programación' por kaloja, 30 Jun 2016.





  1. kaloja

    kaloja Miembro frecuente

    Registro:
    28 Ago 2012
    Mensajes:
    171
    Likes:
    35




    Alguien q' me ayude a resolver este problemita.

    Estoy usando el usuario system y quiero crear un Procedure simple de consulta con un variable.

    Dejo el script

    Código:
    CREATE OR REPLACE PROCEDURE PR_Consultar (nomusu VARCHAR2)
    AS
    BEGIN
    select user_id, account_status FROM DBA_USERS where username=nomusu;
    
    EXCEPTION
       WHEN NO_DATA_FOUND THEN
       DBMS_OUTPUT.PUT_LINE('El user no existe');
    END;
    
    Pero al compilar me sale error:
    Error(5,1): PL/SQL: SQL Statement ignored
    Error(5,37): PL/SQL: ORA-00942: table or view does not exist


    Algun forero con experiencia en Oracle q' me ayude.
    Gracias
     


  2. Raigen

    Raigen Miembro de bronce

    Registro:
    13 Jul 2015
    Mensajes:
    1,128
    Likes:
    149
    Dice tabla o vista no existe. Esta bien escrito el nombre de la tabla, por que claro lo pone el mensaje de error
     
  3. Pulzar

    Pulzar Miembro maestro

    Registro:
    18 Nov 2015
    Mensajes:
    273
    Likes:
    55
    Normalmente cuando no se sabe la causa de un error se suele ingresar a los foros de la comunidad oracle colocando el mensaje de error existen varios cientos de respuesta, te con el error que debes de corregir: http://ora-00942.ora-code.com/
     
  4. eduar2083

    eduar2083 Miembro frecuente

    Registro:
    26 Jul 2011
    Mensajes:
    224
    Likes:
    46
    Hola.
    Las vistas que comienzan con el prefijo dba_ pertenecen generalmente al esquema sys y por tanto su uso está restringido a menos que se otorgue el grant correspondiente. Podrías utilizar otra vista con menos restricción como ALL_USERS y no deberías tener problemas para accederla desde un sp, sin embargo, debes considerar que sus columnas difieren en número (p.ej no existe la columna account_status). Si aún así, deseas acceder a la vista DBA_USERS desde el procedimiento, entonces, un usuario de nivel sys debe otorgarle a system el permiso correspondiente:
    Código:
    GRANT SELECT ON SYS.DBA_USERS TO SYSTEM;
    Y con eso ya system podrá acceder a la vista desde el sp, pero en realidad no le veo ninguna necesidad de momento.
    Otra obsevación es que tu sp aún así provocará error ya que el select no lo asignas a un cursor. Oracle difiere de SQL Server en ese aspecto ya que tienes asignarle explícitamente un cursor a la consulta o hacer un INTO

    Saludos.
     
    Última edición: 2 Jul 2016
    A n00b le gustó este mensaje.
  5. kaloja

    kaloja Miembro frecuente

    Registro:
    28 Ago 2012
    Mensajes:
    171
    Likes:
    35
    Gracias tu si supiste dar una respuesta.
    Ya habia encontrado la rspta, pero estas en lo correcto eso era.
    Talvz mi error fue entrar a este foro q' al parecer es mas hardware.