<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ich verwende den Abfrage-Generator in JMP 12, um eine Datenbank abzufragen, um Informationen abzurufen.
Wir haben bereits eine Menge von bereits geschriebenem Code, um dies mit verschiedenen Anwendungen zu tun, und ich hoffe, dass ich den Code in JMP einfach als "benutzerdefinierte SQL" kopieren und einfügen konnte, damit er ausgeführt werden konnte. Es funktioniert jedoch nicht so reibungslos, wie ich gehofft hatte, und ich bekomme eine Nachricht, die besagt,
Fehler beim Ausführen der SQL-Abfrage:
[Oracle] [ODBC] {Ora] ORA-00911: Ungültiges Zeichen
[SQLSTATE = HY000]
Ich habe ein paar Leute gefragt, die sich mit SQL auskennen und mit diesem Code nichts "Falsches" sehen
/ * ERSTELLUNGSDATUM VON FORMULATION_SAMPLES-TABELLE UND MEHREREN FEHLER-TRACKING-ZAHLEN * /
wählen
sample_value_summary.sample_identifier, order_in_workflow AS "ORDER", creation_date,
max (Fall, wenn param_def_lov_id = 19, dann value_string end) "MATERIAL",
max (Fall wenn param_def_lov_id = 18 ist, dann value_string end) "BATCH",
max (Fall, wenn param_def_lov_id = 5 dann Wertende ist) "TARGET",
max (Fall, wenn param_def_lov_id = 24 dann Wertende ist) "ACTUAL",
(max (Fall bei param_def_lov_id = 24 dann Wertende) - max (Fall bei param_def_lov_id = 5 dann Wertende)) * 1000 als "ERROR [mg]",
ABS ((max (Fall, wenn param_def_lov_id = 24 dann Wertende ist) - max (Fall, wenn param_def_lov_id = 5 dann Wertende ist)) * 1000) als "ERROR [mg]",
ROUND (((max (Fall, wenn param_def_lov_id = 24 dann Wertende ist) - max (Fall, wenn param_def_lov_id = 5 dann Wertende ist)) / max (Fall, wenn param_def_lov_id = 5 dann Wertende ist)) * 100,3) als "ERROR [ %] ",
ABS (ROUND (((max (Fall, wenn param_def_lov_id = 24 dann Wertende ist) - max (Fall, wenn param_def_lov_id = 5 dann Wertende ist)) / max (Fall, wenn param_def_lov_id = 5 dann Wertende)) * 100,3)) als "ABSOLUTER FEHLER [%]",
max (Fall, wenn param_def_lov_id = 34, dann Wert / 86400 + bis_Zeitmarke ('01011970', 'TT-MM-JJJJ') enden) "START TIME",
max (Fall, wenn param_def_lov_id = 35, dann Wert / 86400 + bis_Zielmarke ('01011970', 'TT-MM-JJJJ') Ende) "STOP TIME",
(max (Fall, wenn param_def_lov_id = 35, dann Wertende) - max (Fall, wenn param_def_lov_id = 34 dann Wertende ist)) als "PROZESSZEIT"
von SCO_HTFS.sample_value_summary, SCO_HTFS.formulation_samples
Dabei gilt: sample_value_summary.sample_identifier = formula_samples.sample_identifier und
param_def_lov_id in (5,18,19,24,34,35) und bms_module_id in (11,12)
und exp_plan_sample_id in (wählen Sie exp_plan_sample_id aus sco_htfs.exp_plan_samples aus, wobei exp_plan_id in (
Wählen Sie exp_plan_id aus sco_htfs.experiment_plans, wobei experiment_id = / * EXPERIMENT ID HIER eingeben * / 4742))
/ * DIESE LINIE LÖSCHEN, WENN KEINE ZEITBEDINGUNG ERFORDERLICH ist * / und creation_date zwischen to_timestamp (/ * ENTER START DATE HERE * / '01012014', 'TT-MM-JJJJ') und Current_Timestamp
group by sample_value_summary.sample_identifier, order_in_workflow, erstellungsdatum
order by sample_value_summary.sample_identifier, order_in_workflow;
Dieser Code wird erfolgreich in anderen Anwendungen ausgeführt, sodass er "korrekt" geschrieben wird, aber nicht kompatibel ist. Kann jemand vorschlagen, was den korrekten Abbruch des Vorgangs stören könnte? Ich habe einige davon, die dieselbe Botschaft vermitteln, was bedeutet, dass es einen subtilen Unterschied in der Art und Weise gibt, wie sie geschrieben werden und wie JMP sie benötigt.
Grüße
David
Ich bezweifle persönlich, dass die Kommentare das Problem sind - ich habe einer funktionierenden Oracle-Abfrage Kommentare im C-Stil hinzugefügt, und die Abfrage funktionierte weiterhin.
Wenn ich SQL von d_barnett nehme und versuche, es an mein Oracle zu übergeben, bekomme ich folgende Fehlermeldung:
[Oracle] [ODBC] [Ora] ORA-00933: SQL-Befehl wurde nicht ordnungsgemäß beendet [SQLSTATE = HY000]
anstatt ungültiges Zeichen.
Dies ist auf Windows, nicht auf Mac, richtig?
Eine Sache, auf die Sie achten sollten, ist die Anführungszeichen (einfach oder doppelt), die in SQL eingefügt werden, in das Sie sich einfügen. Fügen Sie Ihre SQL zuerst in den Editor ein und kopieren Sie sie von dort in JMP.
Ich würde vorschlagen, zu versuchen, auf eine einfachere Version von SQL zurückzugreifen, die funktioniert, und mit dem Hinzufügen von Teilen beginnen, bis es erneut fehlschlägt. Es wäre sicher fantastisch, wenn Oracle uns nur sagen könnte, was der ungültige Charakter ist.
Bitte hier posten, wenn Sie das ungültige Zeichen finden. Möglicherweise muss JMP benutzerdefinierte SQL nach formatierten Anführungszeichen scannen und diese in normale Anführungszeichen umwandeln, bevor Sie die SQL-Anweisung übermitteln (falls sich Ihr Problem tatsächlich als formatierte Anführungszeichen herausstellt).
Vielen Dank,
Eric