Oracle SQL中NUMBER数据类型语法解析:(8,2)参数含义是什么?
PL/SQL中NUMBER(8,2)的语法详解
1. NUMBER(p,s)参数的含义
在Oracle的PL/SQL里,NUMBER(p,s)是定义数值型变量的标准格式:
p代表精度:指数字的总位数(包含整数部分和小数部分),你的例子里8表示这个变量最多能存储8位数字;s代表小数位数:就是小数点右侧允许保留的位数,你代码里的2就指定了最终数值会保留两位小数。
2. 关于四舍五入的问题
是的,当计算结果的小数位数超过s的设定值时,Oracle会自动对数值进行四舍五入处理,而非直接截断。比如如果salary*0.10算出的结果是1567.896,赋值给NUMBER(8,2)类型的bonus后,变量值会变成1567.90。
3. 为什么VARCHAR2没有类似语法
VARCHAR2是字符存储类型,它的参数VARCHAR2(n)里的n是用来限制存储的最大字符长度,和数值的精度、小数位属于完全不同的属性范畴——字符类型不需要处理数值的小数位逻辑,所以自然没有这种带双参数的语法。
补充:你的代码小问题
注意你当前的DBMS_OUTPUT.PUT_LINE语句写在了END块外面,这会导致编译报错,正确的写法应该把它放到BEGIN-END块内部:
DECLARE bonus NUMBER(8,2); BEGIN SELECT salary * 0.10 INTO bonus FROM employees WHERE employee_id = 100; DBMS_OUTPUT.PUT_LINE('bonus = ' || TO_CHAR(bonus)); END; /
内容的提问来源于stack exchange,提问作者Ryan_Brusseau
相关产品推荐
相关产品推荐

