Używam oracle express 10g2 ze złączem .net (oracle.dataaccess.dll).
Mój problem polega na tym, że mam 2 tabele do łączenia A i B;
w sqlDeveloper nazywam to:
select * from A; //no problem
select * from B; // no problem
select * from A inner join B on B.id = A.bId; // no problem + joining
moja klasa c # (LocalOracleDataProvider.cs);
var cm1 = connection.CreateCommand();
cm1.CommandText = "select * from A;";
var cm2 = connection.CreateCommand();
cm2.CommandText = "select * from B;";
var cm3 = connection.CreateCommand();
cm3.CommandText = "select * from A inner join B on B.id = A.bId;";
...
var dt1 = cm1.ExecuteReader(); // ok
var dt2 = cm2.ExecuteReader(); // ok
var dt3 = cm3.ExecuteReader(); // crash oracle error ORA-00911 : invalid character
nie rozumiem problemu ... czy to błąd podczas żądania mojego, którego nie widziałem? lub czy jest jakiś problem (nie znalazłem - czy jestem sam?) Czy muszę utworzyć sqlview enkapsulujący prośbę o dołączenie? czy jakaś inna obwodnica?
Z góry dzięki chłopaki!
Odpowiedzi:
0 dla odpowiedzi № 1Spróbuj przekonwertować trzecie polecenie na:
cm3.CommandText = "select * from A inner join B on ( B.id = A.bId ) ;";
0 dla odpowiedzi nr 2
Spróbuj pozbyć się średników na końcu instrukcji SQL.
W instrukcjach SELECT średnik jest niedozwolony, ale w innych instrukcjach, takich jak CALL i EXECUTS, są one wymagane.
Jest to prawdopodobnie zbędne, ale dodaj
cm3.CommandType = CommandType.Text;
0 dla odpowiedzi № 3
Znaleziono ... Program ExecuteReader nie jest zgodny z „;”