2013-03-07 93 views
0

的下面查詢將檢索多於一個col_grp_id如何在refcursor結果集中組合另一個查詢的結果?

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」或「假」。

當值存在於第一個查詢中時,它是「假」,否則它應該是「真」。 我需要使用REFCURSOR與p_check傳遞中的所有行它

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); 

加入如何做到這一點?查詢

+0

這個問題是非常喜歡你以前的問題[如何爲refcursor返回boolen?](http://stackoverflow.com/questions/15243026/how-to-return-a-boolen- in-refcursor),我們怎樣才能進一步幫助你? – 2013-03-07 07:29:26

+0

我修改了這個問題。它不是關於布爾..我只需要字符串。它關於查詢邏輯 – Satheesh 2013-03-07 07:37:14

+0

@Satheesh:所以它是字符串,那麼爲什麼你用ref_cursor嘗試?試着用集合? – 2013-03-07 07:39:49

回答

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你的第一個查詢和case指空「造假「和值‘真’

或者這樣:

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; 

這裏我算他們,而不是(無需明顯)

Here is a sqlfiddle example

+0

完美:)謝謝 – Satheesh 2013-03-07 08:29:49

相關問題