我还是PL / SQL的新手,而我想要做的就是创建一个程序,显示输出活动以及俱乐部数量。如果输入活动没有记录在案,则显示消息,如"活动不在数据库中#34;管他呢。我已经创建了一个函数,我现在需要调用这个函数来执行我所描述的。
我的功能是:
create or replace function ex3b_activity_check (club_id_in in number)
return boolean is
act integer;
begin
select activity into act
from club_activity
where club_id = club_id_in;
if act is not null then
return true;
else
return false;
end if;
end;
我的程序没有给我预期的结果。表格就像这样
SPORTING_CLUBS TABLE
CLUB_ID - NAME - STREET - CITY - STATE - ZIP - PHONE - FEE
------- ----- ------ ----- ----- ---- ----- -----
CLUB_ACTIVITY TABLE
CLUB_ID - ACTIVITY
------- --------
我花了更多时间来解决问题,而不是其他任何问题。非常感谢任何帮助。谢谢。
答案 0 :(得分:0)
我不建议使用boolean,因为它不能用纯sql识别,无论如何你可以使用你的函数如下:
declare MyValue boolean;
begin
MyValue := ex3b_activity_check(1);
end;
我要重新使用varchar2,它将返回一个Y或N的单个字符串,如下所示:
CREATE OR REPLACE FUNCTION EX3B_ACTIVITY_CHECK (CLUB_ID_IN IN NUMBER)
RETURN VARCHAR2
IS
COUNT_IT NUMBER;
BEGIN
SELECT COUNT(ACTIVITY)
INTO COUNT_IT
FROM CLUB_ACTIVITY
WHERE CLUB_ID = CLUB_ID_IN;
IF COUNT_IT = 0
THEN
RETURN 'N';
ELSE
RETURN 'Y';
END IF;
END;
然后你可以像
一样轻松使用它Select EX3B_ACTIVITY_CHECK(1) from dual;