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

error : incomplete or malformed

Estas en el tema de error : incomplete or malformed en el foro de Oracle en Foros del Web. Ayuda con un mensaje de error que me ha salido con una variable de tipo DATE the declaration of the type of this expression is ...
  #1 (permalink)  
Antiguo 25/07/2014, 09:44
 
Fecha de Ingreso: noviembre-2013
Mensajes: 147
Antigüedad: 10 años, 5 meses
Puntos: 1
error : incomplete or malformed

Ayuda con un mensaje de error que me ha salido con una variable de tipo DATE

the declaration of the type of this expression is incomplete or malformed

recibo por pantalla dos fechas y se las asigno a dos variables fecha inicial y fecha final, ambas de tipo DATE, pero a la variable que guarda la FECHA FINAL me genera el mensaje de error, como puedo arreglar esto o donde puedo conseguir información sobre el tema ya que lo que he encontrado hablan es de permisos a la bd.

Gracias por sus aportes
  #2 (permalink)  
Antiguo 25/07/2014, 09:58
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: error : incomplete or malformed

Bueno, si no vemos el código del script PL/SQL que estás intentando generar, es muy difícil decirte por donde empezar.
Como mínimo solemos pedir que posteen lo hecho. Sin eso...



Además, si lees con atención el problema parece bastante evidente: "la declaración de TYPE de esta expresión está incompleta o mal formada". Lo que en buen romance significa que estás cometiendo un error..

Como dije, postea el script PL/SQL para que podamos ver lo que hiciste.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 25/07/2014, 10:16
 
Fecha de Ingreso: noviembre-2013
Mensajes: 147
Antigüedad: 10 años, 5 meses
Puntos: 1
Respuesta: error : incomplete or malformed

Gracias gnzsoloyo

mira esta linea recibe los datos del usuario :

Código Javascript:
Ver original
  1. htp.p(WSGJSL.CallNotNull('document.forms[0].P_F', WSGL.MsgGetText(221, WSGLM.MSG219_MISSING_MANDATORY, 'Fecha Desde:')));
  2.       htp.p(WSGJSL.CallNotNull('document.forms[0].U_F', WSGL.MsgGetText(221, WSGLM.MSG219_MISSING_MANDATORY, 'Fecha Hasta:')));


con este procedimiento armo el query correspondiente (esta recortado para resumir)
Código SQL:
Ver original
  1. PROCEDURE QUERY( P_LOGIN     IN VARCHAR2,
  2.                          P_COD_PROV  IN VARCHAR2,
  3.                          P_COD_MOD   IN NUMBER,
  4.                          P_TIEMPO    IN VARCHAR2,
  5.                          P_RESULTADO IN VARCHAR2,
  6.                          P_F         IN VARCHAR2,
  7.                  U_F         IN VARCHAR2,
  8.                  P_CANAL     IN VARCHAR2,
  9.                  P_SUC       IN VARCHAR2,
  10.                  P_AGEN      IN VARCHAR2,
  11.                  P_GRUPO     IN VARCHAR2,
  12.                  P_RAMO_C    IN VARCHAR2,
  13.                       Z_ACTION      IN VARCHAR2) IS
  14. CURSOR CIA IS
  15.  SELECT SUM(a.vr_nvos_negocios+
  16.            a.vr_renovaciones +
  17.            a.vr_modificaciones)               v_prod
  18.   FROM PROD_REC a
  19.       ,ramos b
  20.       ,agencias ag
  21.  WHERE a.cod_cia            = b.cod_cia
  22.    AND a.cod_secc_contable  = b.cod_cont
  23.    AND a.cod_secc           = b.cod_secc
  24.    AND a.cod_ramo           = b.cod_ramo
  25.    AND b.cod_cia>0  AND b.cod_secc>0  AND b.cod_ramo>0  AND b.cod_cont>0
  26.    AND a.cod_div_dreg       = ag.cod_div_reg
  27.    AND a.cod_ofi_comer      = ag.cod_ofi_comer
  28.    AND a.cod_agencia        = ag.cod_agencia
  29.    AND a.cod_secc_contable <> 888
  30.    AND   a.cod_ramo          <> 999
  31.    AND a.fecha             >= v_fecha_i  
  32.    AND a.fecha             < v_fecha_f     <---ESTA ES LA VARIABLE QUE GENERA EL ERROR
  33.    AND a.cod_div_dreg      IN ( SELECT t.cod_div_reg.........

Las variables son inicializadas de esta forma :

v_fecha_i date;
v_fecha_f date;

No entiendo que estoy haciendo mal.

Gracias por sus aportes.

Última edición por gnzsoloyo; 25/07/2014 a las 10:29
  #4 (permalink)  
Antiguo 25/07/2014, 10:18
 
Fecha de Ingreso: noviembre-2013
Mensajes: 147
Antigüedad: 10 años, 5 meses
Puntos: 1
Respuesta: error : incomplete or malformed

Algo extraño es que las dos variables v_fecha_i y v_fecha_f son iguales....solo genera error en la segunda...
  #5 (permalink)  
Antiguo 25/07/2014, 10:32
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: error : incomplete or malformed

Código SQL:
Ver original
  1. AND a.fecha             >= v_fecha_i  
  2. AND a.fecha             < v_fecha_f
Y, seré curioso... ¿Dónde se supone que están definidas estas variables?
Por otro lado te comento que si no pones TODO el código del SP, podrías estar suprimiendo precisamente las partes donde el problema realmente se produce...

Cita:
solo genera error en la segunda...
no es que genere error en la segunda. Es donde el problema se manifiesta, pero puede no estar alli.

Postealo completo, no lo abrevies.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 25/07/2014, 10:45
 
Fecha de Ingreso: noviembre-2013
Mensajes: 147
Antigüedad: 10 años, 5 meses
Puntos: 1
Respuesta: error : incomplete or malformed

Gracias gnzsoloyo

Ahi va...

Código SQL:
Ver original
  1. PROCEDURE QUERY( P_LOGIN     IN VARCHAR2,
  2.                          P_COD_PROV  IN VARCHAR2,
  3.                          P_COD_MOD   IN NUMBER,
  4.                          P_TIEMPO    IN VARCHAR2,
  5.                          P_RESULTADO IN VARCHAR2,
  6.                          P_F         IN VARCHAR2,
  7.                  U_F         IN VARCHAR2,
  8.                  P_CANAL     IN VARCHAR2,
  9.                  P_SUC       IN VARCHAR2,
  10.                  P_AGEN      IN VARCHAR2,
  11.                  P_GRUPO     IN VARCHAR2,
  12.                  P_RAMO_C    IN VARCHAR2,
  13.                       Z_ACTION      IN VARCHAR2) IS
  14. CURSOR CIA IS
  15.  SELECT SUM(a.vr_nvos_negocios+
  16.            a.vr_renovaciones +
  17.            a.vr_modificaciones)               v_prod
  18.       ,SUM(a.vr_rcdos_nvos_negocios+
  19.            a.vr_rcdos_renovaciones +
  20.            a.vr_rcdos_modificaciones)         v_rec
  21.       ,SUM(a.vr_sini_reserva)                 v_res
  22.       ,SUM(a.vr_sini_liquidados)              v_liq
  23.       ,SUM(a.vr_comisiones)                   v_com
  24.   FROM prod_rec a
  25.       ,ramos b
  26.       ,agencias ag
  27.  WHERE a.cod_cia            = b.cod_cia
  28.    AND a.cod_secc_contable  = b.cod_cont
  29.    AND a.cod_secc           = b.cod_secc
  30.    AND a.cod_ramo           = b.cod_ramo
  31.    AND b.cod_cia>0  AND b.cod_secc>0  AND b.cod_ramo>0  AND b.cod_cont>0
  32.    AND a.cod_div_dreg       = ag.cod_div_reg
  33.    AND a.cod_ofi_comer      = ag.cod_ofi_comer
  34.    AND a.cod_agencia        = ag.cod_agencia
  35.    AND a.cod_secc_contable <> 888
  36.    AND   a.cod_ramo          <> 999
  37.    AND a.fecha             >= v_fecha_i
  38.    AND a.fecha             < v_fecha_f
  39.  
  40.    AND a.cod_div_dreg      IN ( SELECT t.cod_div_reg
  41.                                 FROM  canales t
  42.                                 WHERE t.grupo       LIKE decode(P_CANAL,NULL,'%',P_CANAL)
  43.                                    OR t.cod_div_reg LIKE decode(P_CANAL,NULL,'%%',P_CANAL)
  44.                                )
  45.    AND a.cod_ofi_comer LIKE NVL(P_SUC , '%')
  46.    AND a.cod_secc_contable LIKE nvl(p_ramo_c , '%')
  47.   AND a.cod_agencia LIKE NVL(P_AGEN, '%')
  48.    AND b.grupo    LIKE nvl(p_grupo ,'%')
  49.    
  50.   GROUP BY    a.cod_cia  ;
  51. --
  52.  v_canal varchar2(280);
  53.  v_suc varchar2(80);
  54.  v_ramo_c varchar2(80);
  55.  v_grupo varchar2(80);
  56. --  v_suma number(12,2) := 0;
  57. -- TABLA DINAMICA
  58.  TYPE reg_datos IS RECORD (
  59.   codigo   NUMBER(5),
  60.   nombre   varchar2(100),
  61.   prod_vlr NUMBER(18),
  62.   prod_prt NUMBER(18,1),
  63.   rcdo_vlr NUMBER(18),
  64.   rcdo_prt NUMBER(18,1),
  65.   savi_vlr NUMBER(18),
  66.   savi_prt NUMBER(18,1),
  67.   sliq_vlr NUMBER(18),
  68.   savi_pro NUMBER(18,1)
  69.  );
  70.  TYPE tabla_datos IS TABLE OF reg_datos INDEX BY BINARY_INTEGER;
  71.  d    tabla_datos;
  72. -- Variables para recorrer la tabla
  73.  i binary_integer := 0 ;
  74.  ROWS binary_integer := 0;
  75.  v_fecha_i  DATE;
  76.  v_fecha_f  DATE;
  #7 (permalink)  
Antiguo 28/07/2014, 13:36
 
Fecha de Ingreso: noviembre-2013
Mensajes: 147
Antigüedad: 10 años, 5 meses
Puntos: 1
Respuesta: error : incomplete or malformed

el problema no es de formato, parece que hay un registro dañado...pero voy a abrir un nuevo tema con esta pregunta.
  #8 (permalink)  
Antiguo 28/07/2014, 13:44
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: error : incomplete or malformed

OK.
Tengo mis dudas de que esté bien armado ese código que pasaste, o que siquiera esté completo.
Si intento formatearlo para compilar me genera errores, aún incluyendo un body ficticio.

¿Estás seguro de haber posteado el código completo? ¿Todo?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 28/07/2014, 14:09
 
Fecha de Ingreso: noviembre-2013
Mensajes: 147
Antigüedad: 10 años, 5 meses
Puntos: 1
Respuesta: error : incomplete or malformed

pues es un codigo que programó alguien hace años (y funcionaba), yo le meti quemadas las fechas para probarlo y justo se totea el 26 de mayo de 2014, pero cuando intento hacer un query directo a la tabla que pase por ese dia o en ese dia me genera un mensaje que dice :

ORA 01722 : Invalid Number....no se como detectar exactamente que es....alguna idea?

Última edición por Japrendo; 28/07/2014 a las 14:09 Razón: tilde
  #10 (permalink)  
Antiguo 28/07/2014, 14:21
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: error : incomplete or malformed

Dos cosas:
El error suele darse cuando intentas hacer comparaciones entre datos de diferente tipo, ya que Oracle se maneja muy mal las conversiones implicitas (si es que las permite).
Verifica que estés usando los tipos de dato correcto en el WHERE, que y no haya joins realizados contra datos incompatibles.
Otra cosa que sería bueno saber es qué versión de Oracle ejecuta el SP.

Finalmente, no me termina de cerrar el detalle de si ese SP que posteas está completo. A mi me parece que estás posteando sólo un pedazo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #11 (permalink)  
Antiguo 28/07/2014, 15:01
 
Fecha de Ingreso: noviembre-2013
Mensajes: 147
Antigüedad: 10 años, 5 meses
Puntos: 1
Respuesta: error : incomplete or malformed

gnzsoloyo, creeme que funciona, pero el problema ya me di cuenta que no es de programa si no de datos, lo que no se es como identificar el registro por que cuando armo el query para que me lo muestre me genera el error justo en esa fecha....es como si estuviera dañado algun dato....como puedo verificarlo si no me deja estacionar alli?

Etiquetas: Ninguno
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 16:53.