[英]check if select statement is true in a function in pl/sql
所以我有一個名為汽車的表,設計如下: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 語句沒有錯誤,我只是不知道如何使用它。 也許建議我如何解決這個問題。
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;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.