检查值是否存在的过程

时间:2014-03-15 02:52:43

标签: sql plsql

我还是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
-------   --------

我花了更多时间来解决问题,而不是其他任何问题。非常感谢任何帮助。谢谢。

1 个答案:

答案 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;