如何检查Cursor Expression(选择游标)是否返回null?

时间:2016-08-31 03:57:07

标签: sql oracle cursor expression oracle11gr2

我有一个带有多个内部选择光标的选择光标表达式。如果内部游标返回任何值,我想检查最外面的选择光标。 例如,

SELECT
CURSOR
  (SELECT
   CURSOR
     (SELECT c.cat_name category ,
      CURSOR
        (SELECT
         CURSOR
           (SELECT grp.grpng
            GROUPING ,
                             grp.action_group action_group ,
            CURSOR
              (SELECT
               CURSOR
                 (SELECT header_id ,
                         order_no ,
                         cust_name ,
                         cust_phone ,
                         org ,
                         status `enter code here`,
                         reason
                  FROM headers h
                  WHERE h.header_id = da.header_id ) "G_HEADER"
               FROM dual) "LIST_G_HEADER"
            FROM action_group grp
            WHERE grp.grpng = da.grpng
              AND grp.action_grp = da.action_grp ) "G_ACTION"
         FROM action_rep da
         WHERE da.org = 'test'
           AND da.cat_id = c.cat_id
         ORDER BY category,
         GROUPING,
                  reason ) "LIST_G_ACTION_GROUP"
      FROM dual ) "G_CATEGORY"
   FROM dual ) "LIST_G_CATEGORY" ,
       c.category_name
FROM cat c
ORDER BY c.cat_name

我需要检查一下" LIST_G_CATEGORY"的结果。 cursor是否为null,如果为null,则不显示该行。 P.S:请忽略列名不匹配,因为查询是在急于发布的时候编写的。

版本:Oracle 11g R2

1 个答案:

答案 0 :(得分:0)

为了检查光标是否为为空,首先应fetch

这意味着当function为空时,您可以对SYS_REFCURSOR(可能使用1)进行相应的回复0cursor。不是 - 但你应该知道rowtype返回的cursor,以便做到这一点。

检查此参考资料

oracle cursor expression

similar question on stackoverflow

check sys ref cursor is empty - stackoverflw

ref cursor rowcount question