/ /結合によるOracleのExecuteReader-.net、c#-4.0、oracle10g

ジョインでOracle上のExecuteReader - .net、c#-4.0、oracle10g

.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は0

3番目のコマンドを次のように変換してみてください:

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は ";"と互換性がありません