/ / ExecuteReader na Oracle z łączeniami - .net, c # -4.0, oracle10g

ExecuteReader na Oracle z łączeniami - .net, c # -4.0, oracle10g

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 № 1

Spró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 „;”