2011-01-28 8 views
0

本当に変です。VARCHAR2 JBossからOracleにコール中にコンテンツが失われました

Iこれは、このよう

select a.*, highlightDesc(a.Desc) as highlightedDesc 
from tablea a 

呼び出さ

function highlightDesc(desc IN VARCHAR2, keyword IN VARCHAR2) return VARCHAR2 
return 'paragraphtag' || 
     REPLACE(desc, keyword, 'boldtag' || keyword || 'boldtag') || 'paragraphtag'; 

Oracleの機能を持っている奇妙なことは、私は、このSQLを呼び出すときSQLPLUSまたはPLSQL Developer内からhighlightedDesc列がすべて含まれていることです右のマークアップ。

私がJunitから呼び出すと、すべて適切なマークアップが得られます。

jboss(winxp/redhat)上で実行されているstruts2アプリケーションからoracle thinドライバを呼び出すと、 囲みの段落タグと内容は表示されますが、太字タグは表示されません。

それは意味がありますか? 考えていますか?

編集:

私はお詫び申し上げます、私は仕事からSOにログインできません。ラメ私は知っている。

私はjavaクラスからsqlを実行するために、dbutils queryrunner(BeanListHandler)を使用しています。 私の行動はサービスクラスを呼び出して値を設定すること以外は何もしていません。

私はqueryrunnerのsrcを見て、BeanProcessorというクラスを呼び出して、highlightedDesc列をrs.getString(index)を介してStringとして取得します。

私はそれがエンコードの問題かもしれないと思った???私はjvmエンコーディングとjbossエンコーディングを変更しようとしましたが、何の効果もありませんでした。 oracleの文字セットを変換しても効果があるのでしょうか?

ありがとうございました。

+0

コードがS2アクションに含まれていて、アクションを送信している場合は、コールに関連するコードを投稿してください。 – Quaternion

答えて

1

ほとんどの場合、keywordは関数に正しく渡されないため、REPLACE関数は効果的に何も行いません。

+0

ありがとうございます、私は、Webページから渡されたパラメータが大文字と小文字を区別していることに気付きました。私は、ReplaceからRegex_replaceへの呼び出しを 'i'オプションで変更しました... – Sumit

関連する問題