VARCHAR2从JBoss调用Oracle时丢失了内容

时间:2011-01-28 18:20:48

标签: oracle jboss struts2

真的很奇怪。

我有一个Oracle函数

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

以这种方式调用

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

奇怪的是,当我从sqlplus或plsql开发人员中调用此sql时,highlightDesc列包含所有正确的标记。

当我从Junit调用它时,我得到了所有正确的标记。

当我使用oracle瘦驱动程序从运行在jboss(winxp / redhat)上的struts2应用程序调用它时, 我得到了封闭的paragraphtag标签和内容,但没有粗体标签。

这有意义吗? 有什么想法吗?

编辑:

我道歉,我无法从工作中登录到SO。拉姆,我知道。

我使用commons dbutils queryrunner(BeanListHandler)从java类执行sql。 我的操作除了调用我的服务类并设置值之外什么都不做。

我查看了src for queryrunner,它最终调用了一个名为BeanProcessor的类,它通过rs.getString(index)将highlightDesc列作为String获取;

我认为这可能是编码问题???所以我试图改变jvm编码和jboss编码,但它没有效果。 我想我可能会看到在oracle中转换字符集是否有任何影响?

感谢。

1 个答案:

答案 0 :(得分:1)

最有可能的是,keyword未正确传递给函数,因此REPLACE函数无效。