首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle多值参数- ORA-00920:无效关系运算符

Oracle多值参数- ORA-00920:无效关系运算符
EN

Stack Overflow用户
提问于 2020-08-11 04:04:54
回答 1查看 268关注 0票数 0

我有一个带有参数v_acct_unit的Oracle查询的SSRS报告。此参数可以是单个值、多值或空值。请参阅下面的3个查询参数。多值参数提供错误消息。如何解决此错误?

错误:

ORA-00920:无效的关系运算符

PARAMS-1 (单行):选择37行。

代码语言:javascript
复制
DEFINE V_BEG_DATE = "'080120'";
DEFINE V_END_DATE = "'080420'" ;
DEFINE V_ACCT_UNIT = "'0200301'" ;

PARAM-2 (空):结果389行

代码语言:javascript
复制
DEFINE V_BEG_DATE = "'080120'";
DEFINE V_END_DATE = "'080420'" ;
DEFINE V_ACCT_UNIT = NULL ;

PARAM-3 (多重):错误

代码语言:javascript
复制
DEFINE V_BEG_DATE = "'080120'";
DEFINE V_END_DATE = "'080420'" ;
DEFINE V_ACCT_UNIT = "'0100001','0200301','',''" ;

SQL:

代码语言:javascript
复制
SELECT
    company company,
    acct_unit acct_unit,
    description description
FROM
    v_glnames names
WHERE
    ((&v_acct_unit) IS NULL OR acct_unit IN (&v_acct_unit))
EN

回答 1

Stack Overflow用户

发布于 2020-08-11 05:23:30

它是关于in列表中的各种元素的。因为它是一个列表,所以不能把它当作单个值来使用。一种选择是使用分层子查询将其拆分为行。下面是一个例子:

代码语言:javascript
复制
SQL> select ename, job, sal
  2  from emp
  3  where ename in (select regexp_substr(replace(q'[&&par_ename]', chr(39), ''), '[^,]+', 1, level)
  4                  from dual
  5                  connect by level <= regexp_count(q'[&&par_ename]', ',') + 1
  6                 );
Enter value for par_ename: 'KING','','SCOTT','',''

ENAME      JOB              SAL
---------- --------- ----------
SCOTT      ANALYST         3000
KING       PRESIDENT      10000

SQL>

根据您使用的工具的不同,参数的引用可能与:par_ename一样简单,但您应该知道。

另一种选择可能是:

代码语言:javascript
复制
SQL> select ename, job, sal
  2  from emp
  3  where ename in (select *
  4                  from table(sys.odcivarchar2list('KING','','SCOTT','',''))
  5                 );

ENAME      JOB              SAL
---------- --------- ----------
KING       PRESIDENT      10000
SCOTT      ANALYST         3000

SQL>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63351339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档