0

.netコネクタ(oracle.dataaccess.dll)でoracleexpress10g2を使用しています。

私の問題は、結合可能な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

私は問題を理解していません...それは私が見なかった私のものを要求するエラーですか?またはそれについて何か問題がありますか(1つは見つかりませんでした-私はこれで一人ですか?)?参加リクエストをカプセル化するsqlviewを作成する必要がありますか?または他のバイパス?

よろしくお願いします!

4

3 に答える 3

0

SQLステートメントの最後にあるセミコロンを削除してみてください。
SELECTステートメントではセミコロンは使用できませんが、CALLやEXECUTSなどの他のステートメントではセミコロンが必要です。

また、これはおそらく冗長ですが、

cm3.CommandType = CommandType.Text;
于 2012-10-01T16:23:55.660 に答える
0

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

cm3.CommandText = "select * from A inner join B on ( B.id = A.bId ) ;";
于 2012-10-01T15:55:18.580 に答える
0

見つかった... ExecuteReaderは「;」と互換性がありません

于 2012-10-01T16:30:50.713 に答える