2011-08-05 64 views
0

我的代碼是這樣的..如何將列與Oracle中的參數進行比較?

SELECT ALL TBL_MONITOR.ITEM_ID, TBL_MONITOR.CATEGORY, 
TBL_MONITOR.BRANDNAME, TBL_MONITOR.PRICE, TBL_MONITOR.QUANTITY 
FROM TBL_MONITOR 
where 
case when :pricetag = 'Great' then tbl_monitor.price >= :para_price end, 
case when :pricetag = 'Less' then tbl_monitor.price >= :para_price end 

這部分不工作,它說..缺少關鍵字==>> =:para_price結束

==> >= :para_price end, 

笏我想做的事情是,如果用戶輸入'更大'的報告將顯示價格大於':para_price' 我該如何解決這個問題?非常感謝提前:)

+0

歡迎StackOverflow上。您可以使用工具欄按鈕格式化源代碼。這次我爲你做了。它也有助於提供您擁有的所有相關信息:*不起作用*不是有用的描述。 –

+1

你是什麼意思_does not work_? – Subdigger

+0

即時通訊抱歉wahat我的意思是..錯誤是在該行,它說..缺少關鍵字==>> =:para_price結束; – domo

回答

4

(從您所建立的語法錯誤除了)試試這個

WHERE 
(:pricetag = 'Great' AND tbl_monitor.price >= :para_price) 
OR 
(:pricetag = 'Less' AND tbl_monitor.price <= :para_price) 
+0

+1。不錯的選擇! – niktrs

+0

tanx但它不起作用.. – domo

+0

:)爲什麼這樣?什麼不工作?你能顯示存儲過程的簽名嗎? – sll

1

嘗試這樣的:

SELECT ALL TBL_MONITOR.ITEM_ID, 
     TBL_MONITOR.CATEGORY, 
     TBL_MONITOR.BRANDNAME, 
     TBL_MONITOR.PRICE, 
     TBL_MONITOR.QUANTITY 
FROM TBL_MONITOR 
WHERE (:pricetag = 'Great' AND tbl_monitor.price >= :para_price) 
OR (:pricetag = 'Less' AND tbl_monitor.price <= :para_price) 
3

的SQL語句CASE不流像C或PHP中的控制指令。這是一個表達式,返回一個值,而不是一個方法來決定你的代碼的哪一部分將被執行。

你不在乎說你想怎麼完成或它是如何失敗的,但它看起來像你想要一個簡單的表達:

WHERE (:pricetag = 'Great' AND tbl_monitor.price >= :para_price) 
OR (:pricetag = 'Less' AND tbl_monitor.price <= :para_price) 
+0

+1。不錯的選擇! – niktrs

+0

+1我相信這是最好的答案 – sll

+0

嗯..與關鍵字wats?嗯...這種情況是這樣的,用戶希望報告顯示「更大」的價值比他輸入':para_price'..這就是爲什麼我使用case語句.. – domo

0
SELECT ALL TBL_MONITOR.ITEM_ID, TBL_MONITOR.CATEGORY, 
TBL_MONITOR.BRANDNAME, TBL_MONITOR.PRICE, TBL_MONITOR.QUANTITY 
FROM TBL_MONITOR 
where 
1 = CASE 
     WHEN :pricetag = 'Great' 
     AND tbl_monitor.price >= :para_price 
     THEN 1 
     WHEN :pricetag = 'Less' 
     AND tbl_monitor.price <= :para_price 
     THEN 1 
     ELSE 0 
    END 
+0

wats用AND關鍵字?嗯...情景是這樣的,用戶希望報告顯示'更大'的值比他輸入':para_price'.. – domo

+0

AND意味着這兩個條件必須爲真:**:pricetag ='好'* *和** tbl_monitor.price> =:para_price ** – schurik

+0

waoah .. wat我想要做的是如果用戶輸入'Graeter'報告將顯示價格高於':para_price' – domo

相關問題