質問

OS言語と異なる照合でOracleデータベースを使用しています。 ODBCドライバーを使用してデータベースにアクセスしています。 DBの照合でサポートされている特殊な非ASCII文字を含むステートメント(たとえば、「select * from x where =?」)を準備すると、その文字を含むデータ行が見つかります。 sql文字列の引数を使用してselectを直接実行すると、データ行が見つかりません。

役に立ちましたか?

解決

純粋に推測しますが、クライアントコンピュータが引数を正しく記述したsql文字列をエンコードしていないためかもしれません。クライアントがDB照合とは異なる地域設定に設定されている場合、Oracleに送信されるselectステートメントを含む文字配列には「不正」が含まれると思います。元のファンキーな文字が配置されたバイト-Oracleは、これらを最初に送信した文字以外の文字として解釈します(行が見つからない原因となります)。

パラメーター化されたアプローチを使用できない理由はありますか(正しく機能しているため)?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top