shiftJISで受け取ったリクエストよりマルチバイトの文字列を取得し、
S2JDBCでoracle10gに対して検索を行う実装をしようとしています。
リクエストから取得した値をBeanMapに検索条件として設定し、SQLファイル内のパラメータを置き換えて検索をしようとすると、
マルチバイト文字を使ったとき、oraー01460が発生してしまいます。
使うSQLファイルの中は以下のようになっています。
select
store_name
from m_store
where
store_name like '%' || /store/'新宿' || '%'
m_storeはstore_code(char (3))とstore_name(varchar(20))を持つテーブルとします。
oraー01460自体は、リクエストされた変換はできません、と主に日付型への暗黙変換の失敗によるものという情報は得たものの、
今回のように文字列に対しての情報は見つけられませんでした。
また、実行ログに出力されるSQL文をコピーし、SQLplusで実行した場合はエラーは発生しません。
また、リクエストからではなく、コーディングで、storeに直接値を設定しても同様にoraー01460が発生し、
パラメーターの置き換えではなく、SQLファイルに直接マルチバイト文字を記述した場合はエラーにならなかったことから、
置き換え時に何かが起きているものと考えています
上記事象を解決するために良い方法なはないでしょうか?
お力をお貸しください。
補足情報
言語 Java7
フレームワーク seasar2.4
DBoracle10g
APサーバ Tomcat7
あなたの回答
tips
プレビュー