所以我有一個名為汽車的表,設計如下:ID、型號、類別、可用性。類別是標準和豪華。我正在嘗試撰寫一個回傳布林值或 int 的函式,如下所示:
function(id)
if category == luxury;
return 1;
else return 0;
我做了這個選擇陳述句,但我不知道我是否可以使用它
SELECT (CASE WHEN Category = 'Luxury' THEN 1 ELSE 0 END) AS is_equal
FROM CARS
WHERE ID = 'TM63DTI';
我必須在 pl/sql 中完成。它是一個學校專案,我停留在這一點上。我對這個 select 陳述句沒有錯誤,我只是不知道如何使用它。也許建議我如何解決這個問題。
uj5u.com熱心網友回復:
PL/SQL 的意思是“Oracle”,而不是“MySQL”。我建議你修復標簽。
所以,如果它真的是 Oracle,那么一個選項可能是這樣的:
create or replace function f_category
(par_id in cars.id%type)
return boolean
is
l_is_equal number;
begin
select case when category = 'Luxury' then 1
else 0
end
into l_is_equal
from cars
where id = par_id;
return l_is_equal = 1;
end;
/
雖然,在 SQL 中使用回傳布林值的函式有點困難,所以 - 也許您還想考慮回傳數字的選項。將以前的功能轉換為新版本很簡單:
create or replace function f_category
(par_id in cars.id%type)
return number
is
l_is_equal number;
begin
select case when category = 'Luxury' then 1
else 0
end
into l_is_equal
from cars
where id = par_id;
return l_is_equal;
end;
/
現在您可以在 SQL 中使用它,例如
select f_category(par_id => 123) from dual;
或者
select *
from cars
where f_category(id) = 1;
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/479735.html
