Tenias toda la razon en lo de los tipos de datos, estaba colocando en las variables del into una de tipo smallint y en la tabla estaba como double. Pero sigo sin resolver lo de la fecha.
Ahora: la variable pfecha la declaro como date
Código SQL
[-]
EMPRESA VARCHAR(100),
SUCURSAL VARCHAR(100),
MODELO VARCHAR(15),
NO_RANGOS INTEGER,
PFECHA DATE)
declare variable P_DATA_D VARCHAR(200);
declare variable P_DATA_H VARCHAR(200);
P_DATA_D = ' AND (''' || cast(:PFECHA as varchar(20)) || ''' - D.VENCIMIENTO) >= ' ||ESDE;
P_DATA_H = ' AND (''' || cast(:PFECHA as varchar(20)) || ''' - D.VENCIMIENTO) >= ' ||:HASTA;
SQL_INS= 'SELECT SUM(e.DEBITO-e.CREDITO) AS SALDO, e.ID_AUXILIAR,e.ID_EMPRESA_CRUCE, e.ID_SUCURSAL_CRUCE,e.ID_TIPO_DOC_CRUCE, e.numero_cruce, ';
SQL_INS=SQL_INS ||' d.fecha, d.vencimiento,e.id_tercero,e.ID_SUCURSAL_TERCERO, E.ID_VENDEDOR FROM CUENTAS_POR_TERCERO e , cuentas_por_tercero d ';
SQL_INS=SQL_INS ||' where e.ID_EMPRESA_CRUCE=d.ID_EMPRESA and e.ID_SUCURSAL_CRUCE=d.ID_SUCURSAL AND E.CUOTA_CRUCE=D.CUOTA ';
SQL_INS=SQL_INS ||' and e.ID_TIPO_DOC_CRUCE= d.id_tipo_doc and e.numero_cruce=d.numero ' ||:EMPRESA ||:SUCURSAL;
SQL_INS=SQL_INS ||_DATA_D ||:P_DATA_H;
SQL_INS=SQL_INS ||' GROUP BY e.ID_AUXILIAR,e.ID_EMPRESA_CRUCE, e.ID_SUCURSAL_CRUCE,e.ID_TIPO_DOC_CRUCE, ';
SQL_INS=SQL_INS ||' e.numero_cruce, d.fecha, d.vencimiento,e.id_tercero,e.ID_SUCURSAL_TERCERO, E.ID_VENDEDOR ';
SQL_INS=SQL_INS ||' having SUM(e.DEBITO-e.CREDITO)<>0 ';
FOR EXECUTE STATEMENT SQL_INS
into :saldo,:id_auxiliar,:id_empresa,:id_sucursal,:id_tipo,:numero,:fecha_DOC,:vencimiento,:id_tercero,:i d_sucursal_tercero, :ID_VENDEDOR
DO
lo ejecuto desde IB-Expert personal y sigue devolviendo el error
Unsuccessful execution caused by a system error that preclude
successful execution of subsequent statements
Dynamic SQL Error
expression evaluation not supported
le coloque los parametros asi
empresa and e.id_empresa=1
sucursal and e.id_sucursal=1
modelo 4
no_rango 4
pfecha 09/20/2004
entonces sigo sin entender...
En el ibAdmin como si lo puedo ejecutar paso a paso
observo que la cadena SQL_INS, se construye bien.
Código SQL
[-]
SELECT SUM(e.DEBITO-e.CREDITO) AS SALDO, e.ID_AUXILIAR,e.ID_EMPRESA_CRUCE,
e.ID_SUCURSAL_CRUCE,e.ID_TIPO_DOC_CRUCE, e.numero_cruce, d.fecha, d.vencimiento,
e.id_tercero,e.ID_SUCURSAL_TERCERO, E.ID_VENDEDOR FROM CUENTAS_POR_TERCERO e ,cuentas_por_tercero d
where e.ID_EMPRESA_CRUCE=d.ID_EMPRESA and e.ID_SUCURSAL_CRUCE=d.ID_SUCURSAL AND E.CUOTA_CRUCE=D.CUOTA
and e.ID_TIPO_DOC_CRUCE= d.id_tipo_doc and e.numero_cruce=d.numero
and e.id_empresa=1 and e.id_sucursal=1
AND ('20-SEP-2004' - D.VENCIMIENTO) >= -9999 AND ('20-SEP-2004' - D.VENCIMIENTO) >= -30
GROUP BY e.ID_AUXILIAR,e.ID_EMPRESA_CRUCE, e.ID_SUCURSAL_CRUCE,e.ID_TIPO_DOC_CRUCE, e.numero_cruce,
d.fecha, d.vencimiento,e.id_tercero,e.ID_SUCURSAL_TERCERO, E.ID_VENDEDOR
having SUM(e.DEBITO-e.CREDITO)<>0
voy al IBConsole pego esta cadena resultante de sql_ins y la ejecuto y funciona ....entonces no entiendo porque mientras está en el procedimiento almacenado no funciona.
Saludos.
Muchas gracias por el interes prestado!