检查 select 语句在 pl/sql 中的函数中是否为真
check if select statement is true in a function in pl/sql
所以我有一辆 table 汽车,设计如下:ID、型号、类别、可用性。
类别是标准和豪华。
我正在尝试编写一个 returns 布尔值或 int 的函数,如下所示:
function(id)
if category == luxury;
return 1;
else return 0;
我做了这个 select 声明,但我不知道我是否可以使用它
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 中使用 returns 布尔值的函数有点困难,所以 - 也许您还想考虑 returns 一个数字的选项.将以前的功能转换为新版本很简单:
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;
所以我有一辆 table 汽车,设计如下:ID、型号、类别、可用性。 类别是标准和豪华。 我正在尝试编写一个 returns 布尔值或 int 的函数,如下所示:
function(id)
if category == luxury;
return 1;
else return 0;
我做了这个 select 声明,但我不知道我是否可以使用它
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 中使用 returns 布尔值的函数有点困难,所以 - 也许您还想考虑 returns 一个数字的选项.将以前的功能转换为新版本很简单:
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;