PDA

Ver la Versión Completa : Consulta con SQL Nativo


gazzita
18/06/08, 20:15:52
Al ejecutar la siguiente sentencia en sql nativo me tira un error por la sintaxis, alguno sabe como puedo arreglarlo. La verdad que no logro darme cuenta, gracias.

EXEC SQL.
DELETE FROM <nomb tabla en oracle>
WHERE augdt BETWEEN :fec_inic AND :fec_fin
ENDEXEC.

bcalderon
18/06/08, 21:43:46
Al ejecutar la siguiente sentencia en sql nativo me tira un error por la sintaxis, alguno sabe como puedo arreglarlo. La verdad que no logro darme cuenta, gracias.

EXEC SQL.
DELETE FROM <nomb tabla en oracle>
WHERE augdt BETWEEN :fec_inic AND :fec_fin
ENDEXEC.

Prueba incluyendo punto y coma al final del where..

EXEC SQL.
DELETE FROM <nomb tabla en oracle>
WHERE augdt BETWEEN :fec_inic AND :fec_fin;
ENDEXEC.[/QUOTE]


Suerte.!!

gazzita
19/06/08, 13:38:19
Gracias por la ayuda. Lamentablemente no funciono. A alguno se le ocurre alguna otra cosa?

ajoliverar
19/06/08, 14:08:56
Estas seguro de que es un error de sitaxis? cual es el numero de error ORA-nnnn?

Tambien puedes intentar poner la condicion así:

augdt >= :fec_ini AND
augdt <= :fec_fin

gazzita
19/06/08, 14:48:02
Cuando se ejecuta esa sentencia la excepcion que tira dice CX_SY_NATIVE_SQL_ERROR

ajoliverar
19/06/08, 15:28:09
Si pero en el texto del dump no hay alguna parte donde te venga el error de ORACLE (supongo que el sap lo tienes en una base datos ORACLE)?

gazzita
19/06/08, 17:20:28
El tema es que es un error que el programa no lo esta atrapando. Para verlo tuve que debaguear y ahi si vi que el error se producia en esa sentencia. Lo que probe de hacer es en vez de ponerle el where augdt >= :fec_inic AND augdt <= :fec_fin. Le puse where kunnr = '66' y asi si funciono, por lo que se me hace que el error esta en como interpreta Oracle la fecha. Yo probe con todas estas y no funciono ninguna:

DELETE FROM <tabla>
WHERE augdt >= '18/06/2008' AND augdt <= '19/06/2008'

DELETE FROM <tabla>
WHERE augdt >= '18062008' AND augdt <= '19062008'

DELETE FROM <tabla>
WHERE augdt >= '18.06.2008' AND augdt <= '19.06.2008'

DELETE FROM <tabla>
WHERE augdt >= '20080618' AND augdt <= '20080619'

gazzita
19/06/08, 17:33:00
El nro de error es ORA-1843

Cutzih
19/06/08, 17:43:35
Oracle maneja las fechas de manera muy peculiar. Al pasarla, le tienes que dar el formato bajo la cual la quieres manejar. Con la función "to_date(tufecha,formato)" lo puedes resolver. Por ejemplo: to_date('2008-06-18','YYYY-MM-DD').
No tengo experiencia en SQLNativo, más sin embargo, sí he trabajado con el manejo de fechas en Oracle, y el error que te está arrojando está en el formato en la cual la estás pasando.

Ojalá te sirva.

angelitotunin
30/09/08, 10:43:24
pon la fecha con el format DD-MES-AA

ejemplo:
12-JAN-08