暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 如何在SQL CASE表达式中为THEN子句返回多个值

askTom 2017-07-22
380

问题描述

嗨,汤姆,

我问的问题可能看起来很简单,但在过去的两天里,我一直在尝试一个解决方案,并在多个论坛中检查,但没有任何线索。

我有一个场景,我必须在自动和手动模式下运行报告。
对于自动模式-所有参数均为null,状态为 “新”
对于手动模式-所有参数都是强制性的,状态可以是 “新” 或 “已发送”
我没有空状态。

我在光标中使用案例语句,其中条件如下:

--- 示例
选择
案例

(l_eno为null,l_ename为null)
然后
l_status = “新”
(l_eno不为null,l_ename不为null)
然后
l_status = “新” , 'sent'
结束
从双重;

我想回来l_status = “新” , 'sent'即超过1个值。

由于我在游标中使用,因此无法使用VARRAY。
您能否建议如何实现这一点。


专家解答

不知道什么

“由于我在游标中使用,因此无法使用VARRAY。”

意味着。

SQL>   select
  2    case
  3      when to_char(sysdate,'SS') > 30 then sys.odcivarchar2list('Sent')
  4      else sys.odcivarchar2list('New','Sent')
  5    end options
  6  from dual;

OPTIONS
-----------------------------------------------------------------------------
ODCIVARCHAR2LIST('Sent')

1 row selected.

SQL> /

OPTIONS
-----------------------------------------------------------------------------
ODCIVARCHAR2LIST('New', 'Sent')

1 row selected.

SQL> select *
  2  from table(
  3  select
  4  case
  5  when to_char(sysdate,'SS') > 30 then sys.odcivarchar2list('Sent')
  6  else sys.odcivarchar2list('New','Sent')
  7  end options
  8  from dual
  9  );

COLUMN_VALUE
--------------------------------------------------------------------------
New
Sent

2 rows selected.
复制



「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论