/ / ExecuteReader на Oracle з приєднаннями - .net, c # -4.0, oracle10g

ExecuteReader в Oracle приєднується - .net, c # -4.0, oracle10g

Я використовую oracle express 10g2 з роз’ємом .net (oracle.dataaccess.dll).

Моя проблема полягає в тому, що я маю 2 таблиці, які можна об’єднати A та B;

у sqlDeveloper я називаю це:

select * from A; //no problem
select * from B; // no problem
select * from A inner join B on B.id = A.bId; // no problem + joining

мій клас 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

я не розумію проблему ... це помилка запиту мого я не бачив? чи є якась проблема з цього приводу (не знайшла - чи я на цьому один?)? чи потрібно створювати sqlview, що інкапсулює запит на приєднання? чи будь-який інший байпас?

Заздалегідь дякую, хлопці!

Відповіді:

0 для відповіді № 1

Спробуйте перетворити третю команду на:

cm3.CommandText = "select * from A inner join B on ( B.id = A.bId ) ;";

0 для відповіді № 2

Спробуйте позбутися крапки з комою в кінці ваших операторів sql.
У операторах SELECT не слід використовувати крапку з комою, але в інших операторах, таких як CALLs та EXECUTS, вони потрібні.

Крім того, це, мабуть, зайве, але додайте a

cm3.CommandType = CommandType.Text;

0 для відповіді № 3

Знайшов ... ExecuteReader не сумісний з ";"