Seltsamerweise erzwingt PL/SQL INTEGER
nicht Parameter. Ich würde erwarten, dass Oracle die Daten entweder implizit konvertiert oder einen Fehler auslöst, wenn 5.2 an einen INTEGER
übergeben wurde Parameter. Sieht so aus, als müssten Sie Ihre eigene Validierung hinzufügen:
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;
/