2014-01-11 57 views
1

我在我的oracle apex中顯示了一個表作爲經典報告的數據庫,現在我想爲此經典報告添加搜索條件並創建了一個選擇列表,兩個文本領域和去按鈕,直到這一切都正確。在這裏,我想在頁面中顯示經典報告,儘管這些值沒有設置。如何在經典報告查詢中進行調整,以便如果未設置這些值,則應根據搜索條件顯示數據庫表中其他所有行。使用頁面項目值在oracle頂點搜索的經典報告

我的報告的來源如下:

select b.* 
from "#OWNER#"."Books" b 
where i_type = 'CU' 
    and state = :P46_STATE 
    and city = :P46_CITY 
    and name = :P46_NAME 

:P46_state是一個選擇列表,:P46_city,:P46_name距離,如果不設置這些值搜索條件的文本字段已經顯示滿報告/以及是否必須根據搜索顯示。

在此先感謝。

回答

-1

你不需要串聯 - 這就是你搞砸了

SO

和(市LIKE '%' ||:P46_CITY || '%' OR:P46_CITY IS NULL)

成爲

和(市LIKE '%:P46_CITY%' OR:P46_CITY IS NULL)

+0

爲什麼這個答案標記正確?不起作用。你不能像這樣連接綁定變量! –

1
select b.* 
from "#OWNER#"."Books" b 
where i_type = 'CU' 
    and (state = :P46_STATE OR :P46_STATE IS NULL) 
    and (city = :P46_CITY OR :P46_CITY IS NULL) 
    and (name = :P46_NAME OR :P46_NAME IS NULL) 

如果你想在搜索上做CITY關鍵字搜索,你可以像使用:

select b.* 
from "#OWNER#"."Books" b 
where i_type = 'CU' 
    and (state = :P46_STATE OR :P46_STATE IS NULL) 
    and (city LIKE '%'||:P46_CITY||'%' OR :P46_CITY IS NULL) 
    and (name = :P46_NAME OR :P46_NAME IS NULL) 

或者,你可以使用INSTR:

select b.* 
from "#OWNER#"."Books" b 
where i_type = 'CU' 
    and (state = :P46_STATE OR :P46_STATE IS NULL) 
    and (INSTR(city, :P46_CITY) > 0 OR :P46_CITY IS NULL) 
    and (name = :P46_NAME OR :P46_NAME IS NULL) 
+0

感謝您的這一點,但我想有像'而不是'城市=:P46_CITY'但是當我嘗試像下面它沒有顯示任何結果。 '城市like%:P46_CITY%'或'city like'%:P46_CITY%'' – xyz9999

+1

':P46_CITY'是一個綁定變量,不是替換,所以它不能像這樣插入到一個字符串中;但是它可以連接到另一個字符串。查看我的編輯。 –