不了解PL/中的"variable length"。.SQL



请参阅以下摘录自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之间的数字

最新更新