sql >> Database >  >> RDS >> Oracle

hoe integer datatype te valideren in Oracle-procedure

Vreemd genoeg dwingt PL/SQL INTEGER niet af parameters. Ik zou verwachten dat Oracle de gegevens impliciet zou converteren of een fout zou genereren als 5.2 werd doorgegeven aan een INTEGER parameter. Het lijkt erop dat u uw eigen validatie moet toevoegen:

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



  1. Volgorde van evaluatie van verklaringen en toewijzing van variabelen in MySQL UNIONS

  2. Hoe kan ik de waarde van een MySQL-query forceren om een ​​bepaalde sortering te gebruiken?

  3. Rails-fout bij het installeren van mysql2 (mysql2-0.3.20)

  4. MySQL Workbench kan geen verbinding maken met de lokale MySQL-service op MAC OSX