Mærkeligt nok håndhæver PL/SQL ikke INTEGER
parametre. Jeg forventer, at Oracle enten implicit konverterer dataene eller sender en fejl, hvis 5.2 blev overført til en INTEGER
parameter. Det ser ud til, at du skal tilføje din egen validering:
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;
/