簡體   English   中英

PL / SQl問題,Oracle 9i

[英]PL/SQl question, oracle 9i

我們這里有一個場景,如果以下條件不成立,我們需要退還車,如果其滿足條件,則不退還任何東西(或null)

table-> from car_list 
condition where color = red and color_tinge = light and car = ?

現在對於color = red和color tinge = any可以有多個值...而我們只需要滿足兩種情況的值即可。 這是表的示例數據:

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

如果條件不為真(我們將車號傳遞給條件),則輸出數據應為car#;如果條件為真,則輸出數據應為null或不為空

任何幫助表示贊賞!

從car_list中選擇汽車,但不選擇(顏色='紅色'和color_tingle ='光'),以及car = car_id;

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

初始化...

創建表YOURTABLE(CAR VARCHAR2(20 BYTE),COLOR VARCHAR2(20 BYTE),TINGE VARCHAR2(20 BYTE)); 插入您的值(“ a1”,“紅色”,“淺色”);

插入您的值('a2','紅色','深色');

插入您的值(“ a1”,“綠色”,“淺色”);

插入您的值('a3','藍色','黑色');

承諾;

選擇*從您的表;

然后...

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;

這將返回car#IDNULL 不知道我是否正確理解您想要什么。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM