<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Sto usando Query Builder in JMP 12 query un database per recuperare informazioni da.
Abbiamo già un sacco di codice già scritto per farlo usando diverse applicazioni e la mia speranza era che potessi semplicemente copiare e incollare il codice in JMP come "SQL personalizzato" e sarebbe eseguito. Tuttavia non sta funzionando nel modo migliore come speravo e ho ricevuto un messaggio
Errore durante l'esecuzione di query SQL:
[Oracle] [ODBC] {Ora] ORA-00911: Carattere non valido
[SQLSTATE = HY000]
Ho chiesto a un paio di persone che conoscono SQL e non riescono a vedere nulla di "sbagliato" con questo codice
/ * DATA DI CREAZIONE DA FORMULATION_SAMPLES TABLE E MULTIPLE ERROR TRACKING FIGURE * /
selezionare
sample_value_summary.sample_identifier, order_in_workflow AS "ORDER", creation_date,
max (caso quando param_def_lov_id = 19 then value_string end) "MATERIAL",
max (caso quando param_def_lov_id = 18 then value_string end) "BATCH",
max (caso quando param_def_lov_id = 5 then value end) "TARGET",
max (caso quando param_def_lov_id = 24 then value end) "ACTUAL",
(max (caso quando param_def_lov_id = 24 then value end) - max (caso in cui param_def_lov_id = 5 then value end)) * 1000 come "ERROR [mg]",
ABS ((max (caso quando param_def_lov_id = 24 then value end) - max (caso in cui param_def_lov_id = 5 then value end)) * 1000) come "ERROR [mg]",
ROUND (((max (caso quando param_def_lov_id = 24 then value end) - max (caso in cui param_def_lov_id = 5 then value end)) / max (caso in cui param_def_lov_id = 5 then value end)) * 100,3) come "ERRORE [ %]",
ABS (ROUND (((max (caso quando param_def_lov_id = 24 then value end) - max (caso quando param_def_lov_id = 5 then value end)) / max (caso quando param_def_lov_id = 5 then value end)) * 100,3)) as "ERRORE ASSOLUTO [%]",
max (caso quando param_def_lov_id = 34 then value / 86400 + to_timestamp ('01011970', 'gg-mm-aaaa') fine) "START TIME",
max (caso quando param_def_lov_id = 35 then value / 86400 + to_timestamp ('01011970', 'gg-mm-aaaa') fine) "STOP TIME",
(max (caso quando param_def_lov_id = 35 then value end) - max (caso quando param_def_lov_id = 34 then value end)) come "PROCESS TIME"
da SCO_HTFS.sample_value_summary, SCO_HTFS.formulation_samples
dove sample_value_summary.sample_identifier = formulation_samples.sample_identifier e
param_def_lov_id in (5,18,19,24,34,35) e bms_module_id in (11,12)
e exp_plan_sample_id in (seleziona exp_plan_sample_id da sco_htfs.exp_plan_samples dove exp_plan_id in (
seleziona exp_plan_id da sco_htfs.experiment_plans dove experiment_id = / * INSERISCI ID ESPERIMENTO QUI * / 4742))
/ * ELIMINA QUESTA LINEA SE NESSUNA CONDIZIONE ORA RICHIESTA * / e data_di_modifica tra to_timestamp (/ * ENTRA INIZIA DATA QUI * / '01012014', 'gg-mm-aaaa') e ora_orario corrente
raggruppa per sample_value_summary.sample_identifier, order_in_workflow, creation_date
ordina per sample_value_summary.sample_identifier, order_in_workflow;
Questo codice viene eseguito con successo in altre applicazioni, quindi è scritto "correttamente" ma non è compatibile, qualcuno potrebbe suggerire cosa potrebbe fermarsi in modo corretto? Ne ho alcuni che danno lo stesso messaggio, quindi sottintende che c'è una sottile differenza nel modo in cui sono scritti e nel modo in cui JMP ha bisogno di loro.
Saluti
David
Personalmente dubito che i commenti siano il problema - ho aggiunto commenti in stile C a una query Oracle funzionante e la query funzionava ancora.
Quando prendo SQL di d_barnett e provo a inviarlo al mio Oracle, l'errore che ottengo è:
[Oracle] [ODBC] [Ora] ORA-00933: comando SQL non terminato correttamente [SQLSTATE = HY000]
piuttosto che carattere non valido.
Questo è su Windows, non su Mac, giusto?
Una cosa da tenere d'occhio sono le virgolette stilizzate (singole o doppie) che si intrufolano in SQL che si sta incollando. Incolla prima il tuo SQL in Blocco note, quindi copialo e incollalo da lì in JMP.
Vorrei suggerire di provare a tornare a una versione più semplice di quello SQL che funziona e iniziare ad aggiungere in parti fino a quando fallisce di nuovo. Sarebbe bello se Oracle potesse dirci qual è il carattere non valido.
Si prega di postare qui se si trova il carattere non valido. Forse JMP ha bisogno di scansionare l'SQL personalizzato per le virgolette stilizzate e convertirle in virgolette normali prima di inviare l'SQL (se davvero il tuo problema si rivela essere virgolette stilizzate).
Grazie,
Eric