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