Я використовую 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 не сумісний з ";"