Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Error(8,52): PLS-00201: el identificador 'valorxxxx' se debe declarar

Estas en el tema de Error(8,52): PLS-00201: el identificador 'valorxxxx' se debe declarar en el foro de Oracle en Foros del Web. Hola a todos: Trabajo en un proyecto desarrollado en C# y Oracle 11g, en el cual manejo a nivel BD "PACKAGES" los cuales me traen ...
  #1 (permalink)  
Antiguo 12/11/2010, 13:02
Avatar de ciisteado  
Fecha de Ingreso: enero-2008
Ubicación: Home Office
Mensajes: 111
Antigüedad: 16 años, 10 meses
Puntos: 0
Pregunta Error(8,52): PLS-00201: el identificador 'valorxxxx' se debe declarar

Hola a todos:

Trabajo en un proyecto desarrollado en C# y Oracle 11g, en el cual manejo a nivel BD "PACKAGES" los cuales me traen loco pues la mayoria me esta arrojando los siguientes errores:

Error(8,4): PL/SQL: Declaration ignored
Error(8,52): PLS-00201: el identificador 'VM_ESTADOS.C_ESTADO' se debe declarar



A continuacion pongo el código del Paquete para que puedan ayudarme:

PACKAGE:
Código:
create or replace
PACKAGE "PKGVM_ESTADOS" 
AS
   /*Tipo que retorna un conjunto de filas para ser manipuladas desde VS2008*/
   TYPE TypeCursor IS REF CURSOR;

   /*Selecciona Vm_estados*/
   FUNCTION fun_selectVm_estados (c_estado_in   IN vm_estados.c_estado%TYPE,
                                  d_estado_in   IN vm_estados.d_estado%TYPE)
      RETURN TypeCursor;

   /*Selecciona Vm_estados por id de póliza*/
   FUNCTION fun_selectVm_estadosByPoliza (
      id_poliza_in IN descuentos_x_zona.id_poliza%TYPE)
      RETURN TypeCursor;
END PKGVm_estados;

PACKAGE BODY:

Código:
create or replace PACKAGE BODY "PKGVM_ESTADOS" 
AS
   /*Selecciona Vm_estados*/
   FUNCTION fun_selectVm_estados (c_estado_in   IN vm_estados.c_estado%TYPE,
                                  d_estado_in   IN vm_estados.d_estado%TYPE)
      RETURN TypeCursor
   AS
      l_consulta   TypeCursor;
   BEGIN
      OPEN l_consulta FOR
         SELECT c_estado, d_estado
           FROM vm_estados
          WHERE 1 = 1 AND (c_estado_in IS NULL OR c_estado = c_estado_in)
                AND (d_estado_in IS NULL
                     OR d_estado LIKE '%' || d_estado_in || '%');

      RETURN l_consulta;
   END fun_selectVm_estados;


   /*Selecciona Vm_estados por id de póliza*/
   FUNCTION fun_selectVm_estadosByPoliza (
      id_poliza_in IN descuentos_x_zona.id_poliza%TYPE)
      RETURN TypeCursor
   AS
      l_consulta   TypeCursor;
   BEGIN
      OPEN l_consulta FOR
           SELECT DISTINCT VME.c_estado, VME.d_estado
             FROM vm_estados VME
                  INNER JOIN detalle_zona DZ
                     ON VME.c_estado = DZ.c_estado
                  INNER JOIN descuentos_x_zona DXZ
                     ON DZ.id_zona = DXZ.id_zona
            WHERE DXZ.id_poliza = id_poliza_in
         ORDER BY VME.d_estado;

      RETURN l_consulta;
   END fun_selectVm_estadosByPoliza;
END PKGVm_estados;
¿que será que estoy haciendo mal...? ya le he dado vueltas y vueltas y no se me vienen a la mente nada para solucionarlo , ojalá que puedan ayudarme...

Saludos y gracias!
  #2 (permalink)  
Antiguo 13/11/2010, 10:52
Avatar de xf_corp  
Fecha de Ingreso: mayo-2008
Mensajes: 57
Antigüedad: 16 años, 7 meses
Puntos: 3
Respuesta: Error(8,52): PLS-00201: el identificador 'valorxxxx' se debe declarar

Hola ciisteado, valida a que esquema pertenece vm_estados, y si el propietario del package tiene privilegios de SELECT sobre tal objeto.
Si si posee el privilegio de SELECT el propietario del package sobre vm_estados, valida que se encuentre en el mismo esquema vm_estados que el package, en caso contrario, que posea un sinónimo público.
también valida que la columna C_ESTADO existe en vm_estados.
En caso de que no tengas privilegio de SELECT asignalo, si no existe la columna, verifica que esta correctamente escrito el nombre. Espero que te sea útil

Saludos.

Etiquetas: declarar, identificador
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:22.