2011-08-05 5 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, 

와트는 경우입니다 사용자가 'Greater'를 입력하면 보고서에 ': para_price'보다 큰 가격이 표시됩니다 어떻게 수정합니까?

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) 
+0

에 오신 것을 환영에 StackOverflow에. '{}'도구 모음 버튼을 사용하여 소스 코드의 서식을 지정할 수 있습니다. 이번엔 내가 너 한테 해 줬어. 또한 관련된 모든 정보를 제공하는 데 도움이됩니다. * 작동하지 않습니다 *는 유용한 설명이 아닙니다. –

+1

무슨 뜻입니까 _ 작동하지 않습니까? – Subdigger

+0

죄송합니다 wahat 내 말은 .. 그 라인에 오류가 있습니다, 그것은 말합니다 .. 누락 된 키워드 ==>> = : para_price end; – 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

: 사전에 많은이 같은 시도 C 또는 PHP와 같은 제어 명령어. 값을 반환하며 코드의 어느 부분이 실행될 지 결정할 수 없습니다.

당신은 당신이 달성하려고하는 또는 어떻게 실패 무슨 말을 상관하지 못했지만, 간단한 표현을 원하는 것 같습니다 :

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

는 SQL CASE 문 밖으로 시도 흐름되지 않습니다 : 감사

+0

+1. 좋은 대안! – niktrs

+0

+1 이것이 최고의 대답이라고 생각합니다. – sll

+0

음 ... AND 키워드가있는 wats? hmmm ... 시나리오는 사용자가 ': para_price'...에 입력 한 것보다 'Greater'값을 표시하도록 보고서를 원했지만 그 이유는 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

AND 키워드가있는 wats? hmmm ... 시나리오는 사용자가 ': para_price'에 입력 한 것보다 'Greater'값을 표시하도록하려는 것입니다. – domo

+0

AND는 두 조건이 모두 TRUE 여야 함을 의미합니다. ** : pricetag = 'Great'* * AND ** tbl_monitor.price> = : para_price ** – schurik

+0

waoah .. wat 사용자가 'Graeter'를 입력하면 보고서에 ': para_price'보다 큰 가격이 표시됩니다. – domo

관련 문제