You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SSRS报表参数单标签指定多值触发ORA-01722错误求助

解决SSRS参数单标签对应多值时的ORA-01722错误

问题原因

你在参数可用值中给单个标签设置了逗号分隔的字符串值(比如123,456),Oracle执行WHERE account_no in (:account)时,会把这个字符串当成单个值尝试转换为数字,导致类型不匹配,触发ORA-01722错误。

正确配置方法

1. 开启参数多值支持(推荐)

  • 打开报表参数设置界面,找到目标参数,勾选「允许多值」选项。
  • 在「可用值」配置中,为需要对应双值的标签添加两条值记录:
    • 第一条:标签填你需要的名称,值填第一个账号数字
    • 第二条:标签填同一个名称,值填第二个账号数字
      用户选择该标签时,会自动选中两个账号值,SSRS会将其作为多值数组传递给Oracle,适配IN子句的需求。

2. 用SQL字符串拆分适配单值参数(备选)

如果不想开启多值参数,可修改SQL查询,通过Oracle函数将逗号分隔的参数值拆分为多行数字:

WHERE account_no IN (
    SELECT REGEXP_SUBSTR(:account, '[^,]+', 1, LEVEL)
    FROM DUAL
    CONNECT BY REGEXP_SUBSTR(:account, '[^,]+', 1, LEVEL) IS NOT NULL
)

此时保持参数为单值,对应双值的标签值设置为纯数字加逗号的格式(如123,456)即可。

3. 验证配置

预览报表,选择对应双值的标签执行查询,确认ORA-01722错误消失,查询能正确返回两个账号的数据。

内容的提问来源于stack exchange,提问作者Chendo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 11:55:16