ora-00939 报告服务中的错误,s-s-rS
Posted
技术标签:
【中文标题】ora-00939 报告服务中的错误,s-s-rS【英文标题】:ora-00939 error in reporting services, s-s-rS 【发布时间】:2009-02-23 16:27:15 【问题描述】:我有一个 s-s-rS 报告,Oracle 是我的后端,我正在使用以下查询来查询我的第二个参数的数据集。
select distinct X
from v_stf_sec_user_staffing_center usc
where usc.center_group_id in (
select distinct center_group_id from V_T_STAFFING_CENTER_GROUP scg
where INSTR(','||REPLACE(:PI_REGION_LIST,' ')||',', ','||scg.group_abbreviation||',') > 0)
and usc.nt_user_name=:PI_NT_USER_NAME
这里PI_REGION_LIST
是一个字符串类型的多值参数。
而PI_NT_USER_NAME
是默认的字符串值参数
当我尝试在“数据”选项卡中手动执行时,此查询工作正常,也在 Oracle 工具中。但是当我在 s-s-rS 中运行报告并为参数PI_REGION_LIST
选择超过 3 个值时,报告会在此数据集上引发错误
ora-00939 错误,函数参数过多。
我无法找出这里的错误。
请帮我出出主意。
【问题讨论】:
【参考方案1】:REPLACE 函数接受三个字符串参数,最后一个是可选的。
MS documentation 表示多值参数有以下限制 "查询必须使用 IN 子句来指定参数。"
如果您实际上不需要执行 REPLACE 来消除空格,您应该可以执行类似的操作
WHERE scg.group_abbreviation in (:PI_REGION_LIST)
【讨论】:
以上是关于ora-00939 报告服务中的错误,s-s-rS的主要内容,如果未能解决你的问题,请参考以下文章