pl/sql 11gを使用しています。超初心者です。
プロシージャとプロシージャの中にあるfunctionのnull値についてです。
クラスの登録の簡単なプロシージャを作っています。
もしクラスのキャパシティにまだ空きがあるかのチェックのfunctionです。

もしクラスの定員に空きがない場合(定員に達している)、nullを返すようにして、nullの場合、'クラスは満員です。登録できません。'と表示します。以下がそのfunctionです。

create or replace Function Valid_capacity(
p_クラス番号 schclasses.クラス番号%type) 
return varchar2 as

v_count number;

begin 
    select (select sc.クラス番号  
    from enrollments e, schclasses sc
    where e.クラス番号 = sc.クラス番号
    and e.クラス番号 = p_クラス番号
    group by e.クラス番号
    having count(e.学生番号) < (select capacity from schclasses where クラス番号 = p_クラス番号)) 
    into v_count
    from dual; --nullで返したいのでサブクエリ使っています。

    if v_count is null then 
        return 'クラスは満員です。登録できません。'; --nullはクラスに空きがないとゆう意味
    else 
        return '登録可能です';
    end if;
end;
/

このfunctionは正常に動きます。(私の試した結果では)
ですがプロシージャに入れると、funtionが機能していないようです。
ここから下はプロシージャのbodyの一部です。

 begin 
         If Valid_capacity(p_クラス番号) is null then
              DBMS_OUTPUT.PUT_LINE('Cource is NOT Available');
         Else 
              DBMS_OUTPUT.PUT_LINE('You are enrolled');
        end if;

 END;
 /

このプロシージャではnullでもElseの値を返します。
これはどうゆう意味でしょうか?
ご教授お願いいたします。