Question

J'ai essayé d'exécuter la requête de sélection suivante sur un oracle 11g à partir de Java (en utilisant un pilote léger) lorsque j'ai récupéré ce code d'erreur.ma question est pourquoi j'obtiens cette erreur ?je suppose que cela doit être un problème avec le pilote léger, mais je n'arrive pas à comprendre ce que cela pourrait être car il prend en charge les requêtes sélectionnées...s'il vous plaît, aidez-moi !

java.sql.SQLException: ora-03001 unimplemented feature

ou une version :

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
"CORE   11.2.0.1.0  Production"
TNS for 64-bit Windows: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production

la requête était :

    query = "select e.eq_nr as \"Eqiptmentnummer\", f.file_name as \"Dateiname\" e.adress as \"Adresse\","
            + " e.city as \"Ort\", e.county as \"Bundesland\", e.zip_code as \"PLZ\","
            + " e.manufacturer as \"Hersteller\" f.doc_info as \"DOC INFO\""
            + " from elevators e join files f on(e.eq_nr = (select eq_nr from file_links where file_id = f.file_id))";

en utilisant PrepareStatement et ExecuteQuery :

PreparedStatement ps = c.getCon().prepareStatement(query);
ResultSet rs = ps.executeQuery();

J'ai exécuté cette requête dans SQL Developer et cela m'a donné ce résultat (tous les ascenseurs et leurs fichiers associés), qui est correct :

eq_nr | file_name     |      adress    | city  |county| zip  |manufaturer|  note
1000    testname1.pdf   somestreet 12   Vienna  Vienna  1200    OTIS    test insert brown 1
1000    testname2.pdf   somestreet 12   Vienna  Vienna  1200    OTIS    test insert brown 2
1000    testname4.pdf   somestreet 12   Vienna  Vienna  1200    OTIS    test insert brown 4
1001    testname.pdf    somestreet 123  Vienna  Vienna  1200    KONE    test insert brown
1001    testname3.pdf   somestreet 123  Vienna  Vienna  1200    KONE    test insert brown 3
1001    testname5.pdf   somestreet 123  Vienna  Vienna  1200    KONE    test insert brown5 
1001    testname6.pdf   somestreet 123  Vienna  Vienna  1200    KONE    test insert brown 6

asd sélectionnez * dans les ascenseurs :

elevator id|         adress        | city | county | zip  | manufacturer
1000        somestreet 12   Vienna  Vienna  1200    OTIS
1001        somestreet 123  Vienna  Vienna  1200    KONE

sélectionnez * dans les fichiers :

[FILE_ID]  [FILE_NAME]  [FILE_PATH]     [FILE_TYPE] [LAST_CHANGED]         [ARCHIVE_FLAG][DOC_INFO]
77       [testname.pdf] [C:\testname.pdf]   [pdf]   27.02.14 19:08:39,720000000  0      [test insert brown]
987     [testname1.pdf] [C:\testname1.pdf]  [pdf]   27.02.14 19:08:55,195000000  0      [test insert brown 1]
76523   [testname2.pdf] [C:\testname2.pdf]  [pdf]   27.02.14 19:09:09,735000000  0      [test insert brown 2]
123323  [testname3.pdf] [C:\testname3.pdf]  [pdf]   27.02.14 19:09:35,912000000  0      [test insert brown 3]
1232    [testname4.pdf] [C:\testname4.pdf]  [pdf]   27.02.14 19:09:49,219000000  0      [test insert brown 4]
8888212 [testname5.pdf] [C:\testname5.pdf]  [pdf]   27.02.14 19:10:08,267000000  0      [test insert brown5 ]
5678    [testname6.pdf] [C:\testname6.pdf]  [pdf]   27.02.14 19:10:22,213000000  0      [test insert brown 6]

sélectionnez * dans file_links :

eq_ nr     file_id  valid
1000    76523   0
1000    1232    0
1000    987 0
1001    5678    0
1001    8888212 0
1001    123323  0
1001    77  0
Était-ce utile?

La solution

Il s'agit peut-être simplement d'un problème de copier-coller.Dans chaque requête que vous avez postée, il vous manque une virgule entre

f.file_name as \"Dateiname\" e.adress as \"Adresse\",

mais la modification ci-dessus ne le fait pas.

f.file_name as \"Dateiname\", e.adress as \"Adresse\",

Est-ce que ça peut être aussi simple ?;)

Autres conseils

Je suppose que la combinaison jointure/sous-sélection n'est pas standard.Je suggérerais quelque chose comme

query = "select e.eq_nr as \"Eqiptmentnummer\", f.file_name as \"Dateiname\" e.adress as \"Adresse\","
        + " e.city as \"Ort\", e.county as \"Bundesland\", e.zip_code as \"PLZ\","
        + " e.manufacturer as \"Hersteller\" f.doc_info as \"DOC INFO\""
        + " from elevators e"
        + " join files f on (e.eq_nr = f.eq_nr)"
        + " where e.eq_nr in ("
        + "   select f.eq_nr"
        + "   from files f"
        + "   join file_links fl"
        + "   where fl.file_id = f.file_id"
        + ")";

MODIFIER

query = "select e.eq_nr as \"Eqiptmentnummer\", f.file_name as \"Dateiname\", e.adress as \"Adresse\", e.city as \"Ort\", e.county as \"Bundesland\", e.zip_code as \"PLZ\",  e.manufacturer as \"Hersteller\", f.doc_info as \"DOC INFO\""
    + " from elevators e"
    + " join file_links fl on (e.eq_id = fl.eq_id)"
    + " join files f on (f.file_id = fl.file_id)";
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top