Bonjour,
j'essaie de récupérer des données dans un champ stocké sous forme de NCLOB dans une base Oracle.

Ce champ comporte des données pour 30 molécules.
A l'intérieur de chaque molécule, 22 valeurs sont renseignées.

Exemple sur une molécule :

{
'[{
"molecule":{
"tauxDepart":"0.77","ecoPotentielBoite":"1.65","tauxStabilite":"1","tauxArrive":"0.9108","codeStabilite":"331","denoTauxArrive":"269","numTauxArrive":"245","code":"1","seuilIntermediaire":"0.82","seuilBas":"0.57","numStabilite":"10000","codeTauxDepart":"231","flagConcerne":"true","flagTDM":"true","nomMolecule":"ALPRAZOLAM","denoStabilite":"10000","codeTauxArrive":"281","positionResteRep":"AVANT","ecoPotentielTotal":null,"tauxDepartMoyen":"0.77","tauxRealisation":"0.75222222220","respectTauxStabilite":"true","montant":"116.86"}
}
]'}
Je me suis installé la bibliothèque JSON/SQL trouvée sur http://sourceforge.net/projects/pljson/

J'ai fait une fonction pour pouvoir récupérer la valeur d'un champ pour la 1ère molécule (dans un premier temps).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
CREATE OR REPLACE FUNCTION PH_PARSE 
            (
                MyStringIN NCLOB,
                MyChamp VARCHAR2
            )
 
    RETURN VARCHAR2 IS
    MyStringOUT VARCHAR2(255);
 
    v_Tout json;
    v_Mols json;
    v_Molecule json;
 
    BEGIN
        v_Tout:=json(MyStringIN);
        v_Mols:=JSON_EXT.GET_JSON(v_Tout,'listeMolecules');
        v_Molecule:=JSON_EXT.GET_JSON(v_Mols,'molecule');
 
        MyStringOUT := JSON_EXT.GET_STRING(v_Molecule,MyChamp,1);
        RETURN MyStringOUT;
END;
/
Je n'ai pas d'erreur à la compilation ni à l'exécution.

Je n'arrive pas à récupérer la valeur de tauxDepart pour la1ère molécule avec l'appel suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
SELECT PH_PARSE(MyNCLOB,'tauxDepart') FROM DUAL;
La fonction me renvoie une valeur NULL.

Je n'y connais rien en javaScript, si quelqu'un a déjà extrait des données d'une chaîne de caractères représentant un enregistrement JSON avec Oracle, ça m'aiderait bien.

Merci beaucoup.

P.S.

Sur un petit exemple, j'ai réussi à placer ma chaîne de caractères dans un objet json_list et à afficher toutes les données à l'écran.
Mais je n'arrive pas à sélectionner un élément particulier de la liste (par exemple tauxDepart) pour le récupérer et le faire renvoyer par une fonction.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
set serveroutput on format wrapped;
declare
  obj json_list;
begin
  obj := json_list('[{"molecule":{"Nom":"Toto","tauxDepart":"0.77","ecoPotentielBoite":"1.65"}},{"molecule":{"Nom":"Titi","tauxDepart":"1.00","ecoPotentielBoite":"5.87"}}]');
  obj.path('[1][1]').print; -- fonctionne : 1ère molécule : Affiche à l'écran toutes Données de toto
  obj.path('[2][1]').print; -- fonctionne : 2nde molécule : Affiche à l'écran toutes Données de Titi
end;
/