Oracle
 sql >> Base de données >  >> RDS >> Oracle

comment valider le type de données entier dans la procédure oracle

Curieusement, PL/SQL n'applique pas INTEGER paramètres. Je m'attendrais à ce qu'Oracle convertisse implicitement les données ou génère une erreur si 5.2 était passé à un INTEGER paramètre. Il semble que vous deviez ajouter votre propre validation :

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