Konstigt nog tvingar PL/SQL inte INTEGER
parametrar. Jag förväntar mig att Oracle antingen implicit konverterar data eller skickar ett fel om 5.2 skickades till en INTEGER
parameter. Det verkar som att du måste lägga till 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;
/