0

私の質問は、この質問と非常によく似ています-Oracle 11gを使用していることを除いて、Oracleのアドインパラメーターです。VARCHAR(Western European)データベースには、とNVARCHAR(Unicode)データ型の 2 つの異なる文字セットがあります。

db.AddInParameter(cmd, "nationalColumn", DbType.String, "高野")

データベースの各国語文字セットは Unicode であるため、NVARCHAR 列はこれらの文字を保持できます。

私の質問は、追加するパラメーターが NVARCHAR であり、デフォルトで想定されているように見える VARCHAR ではないことを db.AddInParameter 関数にどのように伝えるかです。

これに追加 - System.Data.OracleClient を使用してデータベースに接続しています

4

3 に答える 3

1

西ヨーロッパのエンコーディングでは漢字をエンコードできません。このエンコーディングでは、定義されている文字数が限られており、中国語は含まれていません。

どのような出力を期待しましたか?データが文字化けするか、エラーが返されることを期待しています。

于 2012-06-14T12:05:30.380 に答える
0

自分でパラメーターを指定していますか、それとも Enterprise Library にパラメーターの型を調べさせていますか? 電話している場合

command.AddInParameter(“parameterName”, value);

次の例のように、プロシージャーを呼び出して、Enterprise Library にパラメーターを見つけさせます。

DB.ExecuteNonQuery(“PKG_USER.DELETE”, userId);

プロシージャは というINTパラメータを必要としますP_IDが、コマンドはパラメータ値のみを渡します。EntLib は、パラメーターの順序を使用してそれらを送信します。

こちらもご覧ください

于 2012-06-22T13:34:41.643 に答える
0

私はそれを理解するのに一週間を費やしたので、私は自分の質問に答えています。System.Data 名前空間は、OracleType.Nvarchar として明示的に指定されていない限り、処理する列が国別列であることを認識しません。

上記の状況を解決するには、AddInParameter 関数をオーバーライドして、入力 DBType が String かどうかをチェックし、それを OracleType.NVarchar にマップする switch ケースを追加する必要がありました。

HTH

于 2012-06-25T10:31:30.967 に答える