请参阅以下摘录自PL/SQL教程。我有一个问题的部分是第3行,它说工资是长度6。我不明白那是什么意思。在这段摘录的最后一行,它声明了一个长度为"10"的变量,然后将其初始化为"HR部门",当然不是10个字符。长度是什么意思?
DECLARE
salary number (6);
* “salary” is a variable of datatype number and of length 6.
当变量被指定为NOT NULL时,必须在声明变量时对其进行初始化。
例如:下面的示例声明了两个变量,其中一个变量不是null。
DECLARE
salary number(4);
dept varchar2(10) NOT NULL := “HR Dept”;
另一个例子:
DECLARE
var_salary number(6);
var_emp_id number(6) = 1116;
1116不是6位数字。我不知所措。
最大长度。如果你试图将11个字符存储到dept
中,或者如果你开始在任何工作中每年赚一百万,你就会发现这一点。
这与创建表时没有什么不同:
create table users (
id integer,
name varchar(20)
);
在这种情况下,20
是名称的最大长度。这并不意味着每一行都必须有一个20个字符的名称。
这些是数据的最大"长度"。从文档中,以下是数字的确切含义:
NUMBER [ (p [, s]) ]
具有精度p和刻度s的数字。精度p的范围可以从1至38。刻度s的范围从-84到127。精度和小数位数。NUMBER值要求介于1到22之间字节。
NUMBER(6)
类型的变量可以存储-9999999到999999之间的任何数字。
对于VARCHAR2:
VARCHAR2(size [BYTE | CHAR])
具有的可变长度字符串最大长度大小字节或字符。最大大小为4000字节或字符,最小值为1字节或1个字符。您必须指定VARCHAR2的尺寸。BYTE表示列将具有字节长度语义。CHAR表示列将具有字符语义。
VARCHAR2(10)最多可存储10个字节或10个字符(取决于参数nls_length_semantics
)。
在oracle中,数字变量的长度是它可以容纳的最大位数。对于您的情况,您可以使用-99999到999999之间的数字