プロシージャのnull値、functionのnull値:異なる返り値
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の値を返します。
これはどうゆう意味でしょうか?
ご教授お願いいたします。