<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />J'utilise Query Builder dans JMP 12 pour interroger une base de données sur laquelle extraire des informations.
Nous avons déjà beaucoup de code déjà écrit pour le faire en utilisant différentes applications et mon espoir était que je pourrais simplement copier et coller le code dans JMP en tant que 'SQL personnalisé' et qu'il soit exécuté. Cependant, cela ne fonctionne pas aussi bien que je l’espérais et j’obtiens un message indiquant
Erreur lors de l'exécution de la requête SQL:
[Oracle] [ODBC] {Ora] ORA-00911: Caractère non valide
[SQLSTATE = HY000]
J'ai posé la question à quelques personnes qui connaissent SQL et qui ne peuvent rien voir de «mauvais» avec ce code
/ * DATE DE CRÉATION À PARTIR DE LA TABLE FORMULATION_SAMPLES ET DE PLUSIEURS CHIFFRES DE SUIVI D'ERREURS * /
sélectionner
sample_value_summary.sample_identifier, order_in_workflow AS "ORDER", date_création,
max (cas où param_def_lov_id = 19 puis valeur_string fin) "MATERIAL",
max (cas où param_def_lov_id = 18 puis valeur_string fin) "BATCH",
max (cas où param_def_lov_id = 5 puis valeur end) "TARGET",
max (cas où param_def_lov_id = 24 puis valeur end) "ACTUAL",
(max (cas où param_def_lov_id = 24, puis valeur end) - max (cas où param_def_lov_id = 5, valeur end)) * 1000 sous la forme "ERREUR [mg]",
ABS ((max (cas où param_def_lov_id = 24 puis valeur end)) - max (cas où param_def_lov_id = 5 puis valeur end)) * 1000) sous la forme "ERROR [mg]",
ROUND (((max (cas où param_def_lov_id = 24 puis valeur end)) - max (cas où param_def_lov_id = 5 puis valeur end)) / max (cas où param_def_lov_id = 5 puis valeur end)) * 100,3) comme "ERROR [ %] ",
ABS (ROUND (((max (cas où param_def_lov_id) = 24 puis valeur end)) - max (cas où param_def_lov_id = 5 puis valeur end)) / max (cas où param_def_lov_id = 5 puis valeur end)) * 100,3) comme "ERREUR ABSOLUE [%]",
max (cas où param_def_lov_id = 34 alors valeur / 86400 + to_timestamp ('01011970', 'jj-mm-aaaa') se termine) "START TIME",
max (cas où param_def_lov_id = 35 alors valeur / 86400 + to_timestamp ('01011970', 'jj-mm-aaaa') se termine) "STOP TIME",
(max (cas où param_def_lov_id = 35 puis valeur end)) - max (cas où param_def_lov_id = 34 valeur alors end)) en tant que "TEMPS DE TRAITEMENT"
à partir de SCO_HTFS.sample_value_summary, SCO_HTFS.formulation_samples
où sample_value_summary.sample_identifier = formulation_samples.sample_identifier et
param_def_lov_id in (5,18,19,24,34,35) et bms_module_id in (11,12)
et exp_plan_sample_id dans (sélectionnez exp_plan_sample_id dans sco_htfs.exp_plan_samples où exp_plan_id dans (
sélectionnez exp_plan_id à partir de sco_htfs.experiment_plans où experiment_id = / * ENTREZ L'ID DE L'EXPÉRIENCE ICI * / 4742))
/ * SUPPRIME CETTE LIGNE SI AUCUNE CONDITION DE TEMPS N'EST REQUISE * / et date_création entre to_timestamp (/ * ENTREZ LA DATE DEBUT ICI * / '01012014', 'jj-mm-aaaa') et current_timestamp
group par sample_value_summary.sample_identifier, order_in_workflow, creation_date
order par sample_value_summary.sample_identifier, order_in_workflow;
Ce code s'exécute avec succès dans d'autres applications. Il est donc écrit «correctement» mais non compatible. Quelqu'un pourrait-il suggérer ce qui pourrait empêcher cette exécution correctement? J'en ai quelques-uns qui transmettent le même message, ce qui me laisse supposer qu'il existe une différence subtile dans la façon dont ils sont écrits et dont JMP a besoin.
Cordialement
David
Personnellement, je doute que les commentaires soient le problème - j'ai ajouté des commentaires de style C à une requête Oracle opérationnelle et la requête fonctionnait toujours.
Lorsque je prends le SQL de d_barnett et que je tente de le soumettre à mon Oracle, l'erreur que je reçois est:
[Oracle] [ODBC] [Ora] ORA-00933: La commande SQL n'a pas abouti correctement [SQLSTATE = HY000]
plutôt que caractère invalide.
Ceci est sur Windows, pas Mac, non?
Une chose à surveiller est les citations stylisées (simples ou doubles) qui se faufilent dans le SQL que vous collez. Collez d’abord votre code SQL dans le Bloc-notes, puis copiez-le / collez-le ensuite dans JMP.
Je suggérerais d'essayer de revenir à une version plus simple de ce SQL qui fonctionne et de commencer à ajouter des éléments jusqu'à ce qu'il échoue à nouveau. Ce serait vraiment génial si Oracle pouvait simplement nous dire quel est le caractère invalide.
Merci de poster ici si vous trouvez le caractère invalide. Peut-être que JMP doit analyser le SQL personnalisé à la recherche de citations stylisées et les convertir en guillemets normaux avant de le soumettre (si votre problème s'avère effectivement être des citations stylisées).
Merci,
Eric