Oracle
 sql >> Datenbank >  >> RDS >> Oracle

So validieren Sie den Integer-Datentyp in der Oracle-Prozedur

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;
/