壹佰网|ERP100 - 企业信息化知识门户

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3596|回复: 6

BIEE在answer使用case遭遇ORA-12704错误

[复制链接]
发表于 2008/12/20 15:38:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622  。

您需要 登录 才可以下载或查看,没有帐号?注册

x
BIEE在AIX上安装上经常出现中文查询空结果或者汉字乱码的问题,曾经搞的我焦头烂额,后来经过一系列的打补丁,调配置,终于摸索清楚了,解决了这个问题,但是今天遇到一个很奇怪的问题,期初以为还是字符集的问题,没想到后来才发现是CASE WHEN的问题。下面就是详细的解决过程了。
这是原先的使用的catalog公式,点击“确认”按钮,语法校验是可以通过的。

但是预览数据是报错的,提示ORA-12704:字符集不匹配从“高级”标签页中取得发出的SQL。
然后使用“管理”-“发出SQL”,设置记录级别为7,并查看日志。日志如下:可以看到最终被发送的数据库中执行的SQL语句,发现CASE语句有点问题,CASE WHEN T10551.STATUS_KH = N'G-1'....
这个N有点意思....
将日志中的SQL放到PLSQL developer中执行,报出ORA-12704错误。



在函数列表中,发觉CASE函数有case(switch)和case(if)两种用法.
查询了一下BIEE的帮助手册,在表达式一节,看到帮助手册中给出的示例语句。
case(switch)
示例 CASE Score-par
  WHEN -5 THEN 'Birdie on Par 6'
  WHEN -4 THEN 'Must be Tiger'
  WHEN -3 THEN 'Three under par'
  WHEN -2 THEN 'Two under par'
  WHEN -1 THEN 'Birdie'
  WHEN 0 THEN 'Par'
  WHEN 1 THEN 'Bogey'
  WHEN 2 THEN 'Double Bogey'
  ELSE 'Triple Bogey or Worse'
END
case(if)
示例 CASE
  WHEN score-par < 0 THEN 'Under Par'
  WHEN score-par = 0 THEN 'Par'
  WHEN score-par = 1 THEN 'Bogie'
  WHEN score-par = 2 THEN 'Double Bogey'
  ELSE 'Triple Bogey or Worse'
END
虽然没有明确的说明switch的类型,但是从示例来看,似乎这个switch还是对类型有要求,于是调整了一下公式

问题解决!

这可能算是BIEE函数语法校验中的一个bug了,函数并未明确说明类型要求,而且语法校验也不报错,结果到了出结果的时候,报字符集不匹配,这圈子兜的,唉~~
发表于 2008/12/22 09:33:35 | 显示全部楼层
斑竹,我在做报表开发时也用到了case语句,也知道OBIEE有这两种case,不过因为一开始用的就是case(when)语句,所以就没有碰到你的问题,不过我还是不太明白你所说的“switch对类型有要求”具体是什么意思,为什么你换成case(when)就好了?
 楼主| 发表于 2008/12/22 09:59:10 | 显示全部楼层
你看我帖子里面的示例了吗?case(switch)函数中,switch值都是数字型的。而我当初使用出错的那个公式中,switch值都是字符型的。而BIEE的帮助手册中并没有提及类型要求啊,而且语法校验也通过了,但是展现的时候报错了,所以我说这是BIEE的一个bug啊。
发表于 2008/12/22 10:34:48 | 显示全部楼层
本帖最后由 brianhai 于 2008-12-22 10:37 编辑

噢,明白了,原来是case(switch)的那个when必须是数值型的呀,还真没注意!
顶斑竹啊!
发表于 2008/12/22 12:56:53 | 显示全部楼层
老蓝解决实际问题的能力很强哦 学习``
 楼主| 发表于 2008/12/22 20:02:17 | 显示全部楼层
习惯出了问题查日志了,哈哈
发表于 2013/6/21 17:40:59 | 显示全部楼层
初学者,。虽然还不明白你这问题是什么意思 收藏着  也许有一天我也会遇上。嘿嘿。
谢谢啦。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|壹佰网 ERP100 ( 京ICP备19053597号-2 )

Copyright © 2005-2012 北京海之大网络技术有限责任公司 服务器托管由互联互通
手机:13911575376
网站技术点击发送消息给对方83569622   广告&合作 点击发送消息给对方27675401   点击发送消息给对方634043306   咨询及人才点击发送消息给对方138011526

GMT+8, 2025/11/28 23:00 , Processed in 0.017234 second(s), 14 queries , File On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表