.netコネクター(oracle.dataaccess.dll)でoracle express 10g2を使用しています。
私の問題は、結合可能なAとBの2つのテーブルです。
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を作成する必要がありますか? または他のバイパス?
事前にみんなありがとう!
回答:
回答№1は03番目のコマンドを次のように変換してみてください:
cm3.CommandText = "select * from A inner join B on ( B.id = A.bId ) ;";
回答№2の場合は0
SQLステートメントの最後にあるセミコロンを削除してみてください。
SELECTステートメントではセミコロンは使用できませんが、CALLやEXECUTSなどの他のステートメントでは必須です。
また、これはおそらく冗長ですが、
cm3.CommandType = CommandType.Text;
回答№3の場合は0
見つかった... ExecuteReaderは ";"と互換性がありません