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」のいずれかであるユーザー定義変数です。

値が最初のクエリに存在する場合は "false" であり、それ以外の場合は "true" である必要があります。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、最初のクエリで acaseを使用し、null を「false」として参照し、値を「true」として参照するために a を使用しました

またはこのように:

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 に答える