0

以下查询将检索多个 col_grp_id

SELECT   col_grp_id    
  FROM  co_page_col_grp_user_t 
  WHERE  page_id=p_page_id AND security_userid = p_user;

p_check 是一个用户定义的变量,它应该是字符串“true”或“false”。

当值存在于第一个查询中时它是“假”,否则它应该是“真”。我需要使用添加了 p_check 的 refcursor 来传递所有行

OPEN p_out_col_pref FOR
      SELECT page_id,col_grp_nm,col_grp_id,p_check 
      FROM (SELECT p1.page_id, p2.col_grp_nm, p2.col_grp_id, p_check
            FROM co_page_t p1,
             co_page_col_grp_t p2     
           WHERE p1.page_id = p2.page_id
             AND p1.page_nm = p_rptname
             AND p1.appl_cd = p_applcd
             AND p1.page_id = p_page_id);

这个查询怎么做??

4

1 回答 1

2

您可以在查询中执行此操作(不使用用户定义的变量),如下面的简化示例所示:

select p1.*, case when p2.col_grp_id is null then 'true' else 'false' end p_check
from co_page_t p1 left outer join co_page_col_grp_user_t p2
on p1.col_grp_id = p2.col_grp_id

基本上,我在left outer join您的第一个查询中使用了 a 并将case空值称为“false”,将值称为“true”

或者像这样:

select p1.*, case when 
(select count(*) from co_page_col_grp_user_t p2 where p1.col_grp_id = p2.col_grp_id ) = 0 then 'true' else 'false'
end p_check
from co_page_t p1;

在这里,我计算了它们(不需要不同的)

这是一个 sqlfiddle 示例

于 2013-03-07T08:09:44.927 回答