Thật kỳ lạ, PL / SQL không thực thi INTEGER
thông số. Tôi hy vọng Oracle sẽ chuyển đổi dữ liệu một cách ngầm định hoặc tạo ra một lỗi nếu 5.2 được chuyển đến một INTEGER
tham số. Có vẻ như bạn sẽ cần thêm xác thực của riêng mình:
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;
/