2011-08-08 13 views
2

我々は、以下の条件が真でないと何も(またはnull)を返していない場合は、車を返却する必要があり、ここでシナリオを持ってそこにすることができますcolor = redとcolor tinge = anythingの複数の値にする必要があります。両方の場合を満たすものだけが必要です。条件が真の場合、ヌルまたは何も(私たちは 条件に車両番号を渡している)条件が真でない場合、出力データは、車#でなければなりませんPL/SQLの質問は、Oracle 9iの

 
car color color_tinge 
a1 red  light 
a2 red  dark 
a1 green light 
a3 blue dark 

: は、ここにテーブルのサンプルデータであります

ご了承ください。

+0

申し訳ありません、あなたの説明は非常に混乱しています。合格と不合格の出力データと予想条件を追加して拡張できますか? –

+1

お客様のニーズをよりよく理解できるように、より多くのデータサンプルを提供してください。 –

+0

ok ive最新のhteオリジナルの質問を更新しました。基本的には、条件が満たされていない場合(つまり色=赤と色tinge = lightは真ではありません)、指定された車番号に対して条件がtrueの場合、ヌルの代わりに – sandy

答えて

-2

car#IDまたはNULLのいずれかが返されます。私があなたが望むものを正しく理解しているかどうかはわかりません。

SELECT 
    CASE WHEN EXISTS 
     (SELECT * 
      FROM car_list 
      WHERE color = red 
      AND color_tinge = light 
      AND car = car#ID 
     ) 
     THEN NULL 
     ELSE car#ID 
    END AS Result 
FROM dual 

この作品は、でしょうか?

SELECT Result 
FROM 
    (SELECT 
     CASE WHEN EXISTS 
      (SELECT * 
       FROM car_list 
       WHERE color = red 
       AND color_tinge = light 
       AND car = car#ID 
      ) 
      THEN NULL 
      ELSE car#ID 
     END AS Result 
    FROM dual 
) tmp 
WHERE Result IS NOT NULL 
+0

を使用すると、通常の「no rows selected」を出力できますか? – sandy

+1

Sandy、あなたのorigianl質問では、特にNULLを返すようにクエリを要求しましたが、今度は "no rows selected"を返すようにしますか? – Ollie

0
DECLARE 
myCar VARCHAR(20); 

、その後...

SELECT 
    car 
FROM 
    table 
WHERE 
    color != 'red' AND tinge != 'light' AND car = myCar 

それとも...

SELECT 
    DECODE (color, 'red', DECODE (tinge, 'light', 'FAIL', 'PASS'), 'PASS') 
FROM 
    table 
WHERE 
    car = myCar 
+0

残念ながら、これは質問で車のIDを考慮していない – sandy

+0

それはあなたに軽い赤でない車のためのすべての車のIDを与えるでしょう。あなたが望んでいたものではありませんか? – Chains

+0

私はそれに車のIDを渡したいと思って、上に述べた条件を確認してください。 – sandy

0

初期化...

TABLE YOURTABLEをCREATE( CAR VARCHAR2(20バイト)、 COLOR VARCHAR2(20バイト)、 TINGE VARCHAR2(20バイト));使用可能な値に挿入します ( 'a1'、 'red'、 'light');

お好みの値( 'a2'、 '赤'、 '暗')を挿入します。

貴重な値( 'a1'、 'green'、 'light')を挿入します。

貴重な値( 'a3'、 'blue'、 'dark')を挿入します。

COMMIT;

SELECT * FROM YOURTABLE; (色= '赤' とcolor_tingle = '光')しない カー= car_id car_list から

次に...

SET serveroutput ON 
DECLARE 
    ret VARCHAR2(10); 
    CURSOR c_cur (p1 VARCHAR2) 
    IS 
    SELECT COUNT(1) 
    FROM YOURTABLE 
    WHERE color = 'red' 
    AND tinge = 'light' 
    AND CAR  = p1; 
BEGIN 
    OPEN c_cur('a2'); 
    FETCH c_cur INTO ret; 
    IF ret = 1 THEN 
    dbms_output.put_line('pass'); 
    ELSE 
    dbms_output.put_line('fail'); 
    END IF; 
END; 
2

選択車 。

関連する問題