为什么此返回值在1到5之间?
declare
v numeric;
begin
v := dbms_random.value(1, 5);
DBMS_OUTPUT.PUT_LINE(v);
end;
根据documentation,它应该返回1到4之间的值。
注意:我正在使用Oracle 12c第2版
我认为是因为您使用的不是标准Oracle数据类型numeric
。似乎Oracle将其视为integer
的同义词。因此,看来Oracle正在四舍五入到最接近的整数。
尝试使用NUMBER,您可能根本看不到5.000000000000。
它为您舍入价值。
declare
v numeric(6,5);
w numeric;
begin
v := dbms_random.value(1, 5);
w := v;
DBMS_OUTPUT.PUT_LINE(v);
DBMS_OUTPUT.PUT_LINE(w);
DBMS_OUTPUT.PUT_LINE(FLOOR(v));
end;
/
一个结果:
dbms_output:
4.92843
5
4
其读数小于上限的特定值。
摘自oracle文档:
VALUE函数一个版本返回一个随机数,大于或等于0且小于1,小数点右边为38位数字(38位精度)。其他版本返回随机Oracle数据库NUMBER值x,其中x大于或等于指定的低值,
less than the specified high value.