奇妙なことに、PL/SQLはINTEGER
を強制しません パラメーター。 5.2がINTEGER
に渡された場合、Oracleが暗黙的にデータを変換するか、エラーをスローすることを期待します。 パラメータ。独自の検証を追加する必要があるようです:
create or replace procedure test_procedure(a integer) is
begin
if a is not null and a <> trunc(a) then
raise_application_error(-20000, 'Parameter must be an integer');
end if;
end;
/
--Works
begin
test_procedure(5.0);
end;
/
--Fails with "ORA-20000: Parameter must be an integer".
begin
test_procedure(5.2);
end;
/