请参阅以下摘自PL / SQL教程的摘录。我遇到问题的部分是第3行,其中工资的长度为6,我不明白这意味着什么。在这段摘录的最后一行,它声明了一个“长度为10”的变量,然后将其初始化为“HR Dept”,当然不是10个字符。什么是长度?
DECLARE
salary number (6);
* “salary” is a variable of datatype number and of length 6.
当变量指定为NOT 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位数。我很茫然。
答案 0 :(得分:4)
最大长度。如果你试图将11个字符存储到dept
中,或者如果你开始每年在你的工作中创造一个很酷的百万字符,你会发现这个。
与创建表时没有什么不同:
create table users (
id integer,
name varchar(20)
);
在这种情况下,20
是名称的最大长度。这并不意味着每一行都必须有一个20个字符的名称。
答案 1 :(得分:3)
这些是数据的最大“长度”。从documentation开始,这是数字的确切含义:
<强>
NUMBER [ (p [, s]) ]
强>具有精度p和比例s的数字。精度p的范围可以从 刻度s的范围可以从-84到127.精度和 比例是十进制数字。 NUMBER值需要1到22 字节。
NUMBER(6)
类型的变量可以存储-999999到999999之间的任何数字。
对于VARCHAR2:
<强>
VARCHAR2(size [BYTE | CHAR])
强>可变长度字符串 最大长度大小字节或字符。最大大小为4000字节或 字符,最小为1个字节或1个字符。你必须指定 VARCHAR2的大小。 BYTE表示该列将具有字节 长度语义。 CHAR表示该列将具有字符 语义。
VARCHAR2(10)最多可存储10个字节或10个字符(取决于参数nls_length_semantics
)。
答案 2 :(得分:0)
在oracle中,数字变量的长度是它可以容纳的最大位数。对于您的情况,您可以在-99999到999999之间输入数字