0

クライアントが出力用に特定の列名を要求したという Oracle クエリを作成しようとしています。簡単に言えば、二重引用符を使用してoracle 列エイリアスを使用してクエリを記述します。(要求された列名が予約語であるため、引用符を使用していることに注意してください。)問題は、次のコードを使用してクエリを実行しようとすると
、エラーから を受け取っていることです。ORA-00911: invalid character

OracleCommand command = new OracleCommand(sqlquery, connection.Conn);
dt.Load(command.ExecuteReader());

オラクルの引用演算子とc# 文字列リテラルのさまざまな反復を試しました(つまり、@"これは ""testing"" theliteral" と "this is \"testing\" theliteral")。

クエリは、これを実行したいという点で単純です。

select column1 as "alias1" from dual;

これは、Oracle で直接実行すると機能しますが、.Net アプリケーション経由で実行することはできません。二重引用符をエスケープしてデバッガーでクエリを表示すると、次のようにフォーマットされていることがわかります。

select column1 as \"alias1\" from dual;

それは明らかだと思いますか?バックスラッシュが Oracle エラーの原因になっていることを確認しましたが、これを回避するにはどうすればよいですか?

4

1 に答える 1

1

わお。ほぼ1時間後、私はばかげたことを発見しました。これを残りの人への警告にしましょう。 クエリの文字列リテラルにセミコロンを残さないでください

というか、これでいい…

string query = @"select column1 as ""alias1"" from dual";

...しかし、これはそうではありません...

string query = @"select column1 as ""alias1"" from dual ;";

;2 番目の例で が少し追加されていることに注意してください。

これが他の誰かが時間を節約するのに役立つことを願っています。

于 2013-05-01T14:36:02.487 に答える