oracle 00911エラー(不正な文字)が表示されています。私は誰かが私の理解を助けることを望んでいます。私は私のOracle 11gデータベースにSQL文を実行するには、次のコードを使用していORA 00911 SQL文のwhere句がセミコロンで終了するとエラー?
:
private DataTable ExecuteQuery(DbCommand query) {
DataTable result = new DataTable();
using (DbConnection con = CreateConnection()) {
try {
query.Connection = con;
query.CommandTimeout = int.MaxValue; // don't impose a timeout
using (DbDataAdapter dataAdapter = factory.CreateDataAdapter()) {
dataAdapter.SelectCommand = query;
dataAdapter.Fill(result);
}
}
...
私はそれが正常に動作"Select * from X;"
のようなDbCommand.CommandText
プロパティを使用してこの機能を何かを与えるが、この意志"Select * from x where y;"
与えられた場合にはoracle 00911の例外をスローします。ただし、セミコロンを削除すると、正常に実行されます。
誰かが、特定の種類の文でのみセミコロンで文を終了すると、不正な文字エラーが発生する理由は誰にも分かりますか?明確にするため
アップデート:私は、エラーの原因とセミコロンをテストするために使用さ
正確なクエリた:このクエリはうまく働いた
: SELECT * FROM Machines;
をこのクエリは、ORA 0911を生成エラー: SELECT * FROM Machines WHERE ID = 47;
このクエリは正常に機能しましたが、 SELECT * FROM Machines WHERE ID = 47
< - 一部のプロバイダは、(SELECT COUNT(*)...
のような)先行追加のクエリを実行し、および/または何かを追加 - 唯一のセミコロンはまた、使用されているプロバイダはこの動作は使用DBプロバイダに依存Oracle.DataAccess.Client
実行しようとしているクエリを表示できますか? –
それは文字通り 'Select * from X;'であり、もう一つは 'Select * from x where x.foo = 'bar';' – user12345613
'' bar''の引用符は普通の引用符アスキー39)? –