<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Estoy usando el Generador de consultas en JMP 12. Consulta una base de datos para recuperar información.
Ya tenemos un montón de código ya escrito para hacer esto usando diferentes aplicaciones y mi esperanza era poder copiar y pegar el código en JMP como 'SQL personalizado' y se ejecutaría. Sin embargo, no está funcionando tan bien como esperaba y recibo un mensaje que dice
Error al ejecutar la consulta SQL:
[Oracle] [ODBC] {Ora] ORA-00911: Carácter no válido
[SQLSTATE = HY000]
Le he preguntado a un par de personas que saben sobre SQL y no pueden ver nada "incorrecto" con este código
/ * FECHA DE CREACIÓN A PARTIR DE FORMULACIÓN_MUESTRAS FIGURAS DE SEGUIMIENTO DE TABLAS Y ERRORES MÚLTIPLES * /
seleccionar
sample_value_summary.sample_identifier, order_in_workflow COMO "ORDER", creation_date,
max (caso cuando param_def_lov_id = 19 y luego value_string end) "MATERIAL",
max (caso cuando param_def_lov_id = 18 y luego value_string end) "BATCH",
max (caso cuando param_def_lov_id = 5 entonces valor final) "TARGET",
max (caso cuando param_def_lov_id = 24 luego valor final) "ACTUAL",
(máx. (caso cuando param_def_lov_id = 24 luego final del valor) - máx (caso cuando param_def_lov_id = 5 entonces final del valor)) * 1000 como "ERROR [mg]",
ABS ((máx. (Caso cuando param_def_lov_id = 24 luego final de valor) - máx (caso cuando param_def_lov_id = 5 luego final de valor)) * 1000) como "ERROR [mg]",
ROUND ((((caso cuando param_def_lov_id = 24 entonces final de valor) - max (caso cuando param_def_lov_id = 5 entonces final de valor)) / max (caso cuando param_def_lov_id = 5 entonces final de valor)) * 100,3) como "ERROR [ %] ",
ABS (ROUND ((((caso cuando param_def_lov_id = 24 entonces final del valor) - max (caso cuando param_def_lov_id = 5 entonces final del valor)) / max (caso cuando param_def_lov_id = 5 entonces final del valor)) * 100,3)) como "ERROR ABSOLUTO [%]",
máx (caso cuando param_def_lov_id = 34 entonces valor / 86400 + to_timestamp ('01011970', 'dd-mm-aaaa') final) "START TIME",
máx (caso cuando param_def_lov_id = 35, luego el valor / 86400 + to_timestamp ('01011970', 'dd-mm-aaaa') final) "STOP TIME",
(máx. (caso cuando param_def_lov_id = 35 luego valor final) - max (caso cuando param_def_lov_id = 34 luego valor final)) como "TIEMPO DE PROCESO"
de SCO_HTFS.sample_value_summary, SCO_HTFS.formulation_samples
donde sample_value_summary.sample_identifier = formulación_samples.sample_identifier y
param_def_lov_id en (5,18,19,24,34,35) y bms_module_id en (11,12)
y exp_plan_sample_id in (seleccione exp_plan_sample_id de sco_htfs.exp_plan_samples donde exp_plan_id está en (
seleccione exp_plan_id de sco_htfs.experiment_plans donde experiment_id = / * INGRESE ID DE EXPERIMENTO AQUÍ * / 4742))
/ * ELIMINE ESTA LÍNEA SI NO SE REQUIERE UNA CONDICIÓN DE TIEMPO * / y creation_date entre to_timestamp (/ * INGRESE LA FECHA DE INICIO AQUÍ * / '01012014', 'dd-mm-aaaa') y current_timestamp
agrupar por sample_value_summary.sample_identifier, order_in_workflow, creation_date
ordenar por sample_value_summary.sample_identifier, order_in_workflow;
Este código se ejecuta con éxito en otras aplicaciones, por lo que está escrito 'correctamente' pero no es compatible. ¿Alguien puede sugerir qué podría impedir que esto se ejecute correctamente? Tengo algunos de estos mensajes que transmiten el mismo mensaje, de modo que me da a entender que existe una diferencia sutil en la forma en que están escritos y en la forma en que JMP los necesita.
Saludos
David
Personalmente dudo que los comentarios sean el problema: agregué comentarios de estilo C a una consulta de Oracle en funcionamiento y la consulta aún funcionó.
Cuando tomo el SQL de d_barnett y trato de enviarlo a mi Oracle, el error que recibo es:
[Oracle] [ODBC] [Ora] ORA-00933: el comando SQL no finalizó correctamente [SQLSTATE = HY000]
en lugar de carácter no válido.
Esto está en Windows, no en Mac, ¿verdad?
Una cosa a tener en cuenta es las citas con estilo (simples o dobles) que se ocultan en el SQL que está pegando. Primero pegue su SQL en el Bloc de notas, luego cópielo / péguelo desde allí en JMP.
Sugeriría intentar volver a una versión más simple de ese SQL que funciona y comenzar a agregar partes hasta que vuelva a fallar. Seguro que sería genial si Oracle pudiera decirnos cuál es el carácter no válido.
Por favor regrese aquí si encuentra el carácter inválido. Tal vez JMP necesita escanear SQL personalizado para citas con estilo y convertirlas en citas normales antes de enviar el SQL (si de hecho su problema resulta ser comillas con estilo).
Gracias,
Eric