簡體   English   中英

檢查 pl/sql 函數中的 select 語句是否為真

[英]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.

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