PLSQL入门与精通(第4章:变量之%TYPE)

大家好。我是从事软件行业的牧无文兄。

上一章,介绍了变量的定义,这一次继续深入介绍变量。

上一次,介绍了变量的定义方法。如下:

<变量定义域>
变量名 变量类型;

除此之外,我们介绍一下变量定义中经常使用的东西。

以下是变量定义的新的一种方法:

<变量定义域>
变量名 表名.列名%TYPE;

该方法是变量定义是:用指定表(或视图)中指定列的类型来定义变量和类型”。
也就是说,不是直接指定数据类型,而是间接指定类型的。
例如,将与EMP表的ENAME列相同数据类型的变量以V_ENAME的名称宣告时,定义如下:
<变量定义域>
V_ENAME EMP.ENAME%TYPE;

用这样的方法定义变量的话,第三者在看到其记述的时候也能很好地理解变量的意思。
另外,即使表的列的数据类型发生了变化,也不需要修改源代码。
如果可能的话,建议使用此方法进行变量定义。

变量定义后,该变量没有指定任何值。可以说是空变量。像这样没有值的叫做NULL。
根据程序语言的不同,定义后的变量值也有“不定”的情况,但是PL/SQL语言明确规定为“NULL”。
但是,也可以在数值存储的状态下声明变量。
例如,如果以TAX_RATE的名称声明保存有值5的NUMBER型变量,则如下所示。

<变量定义域>
TAX_RATE NUMBER := 5;

这里,除了TAX_RATE这个变量一开始就含有数值这点之外,它和普通的变量完全一样。
当然,执行域也可以在这个TAX_RATE变量中存储(代入)不同的值。
如果在执行部想禁止向TAX_RATE代入值时,使用CONSTANT关键字如下定义:

<变量定义域>
TAX_RATE CONSTANT NUMBER := 5;

使用CONSTANT关键字定变量时,执行部无法将值代入该变量。也就是说,在上述例子中,
TAX_RATE变量的值始终是5。像这样禁止代入值的变量被称为“常量”。
下面介绍简单常量的使用例子。

例如,TAX_RATE常数表示消费税率5%。
而且,在执行部使用消费税率5%进行各种计算的时候,比起直接在执行部的源代码中写“5”这个数字,
还是用TAX_RATE常量来写比较好。为什么呢,因为将来消费税率变更为3%的时候,变量定义域的TAX_RATE常量的值只是变成“3”,执行部的源代码不需要修改。这是常量的典型使用例子。

那么,如果是变量的话,可以在执行部代入数值,最后说明代入方法。
代入是指给这个变量赋值。

变量中代入值的方法有两种:
使用“:=”和“INTO”的方法
使用“INTO”的方法是将数据库中询问的值代入变量,作为特殊语句的一部分使用。
关于这个虽然是重要的技术,但是说明会变多,所以下次再说明。

那么,使用“:=”的方法是非常简单的。如下。

<执行预>
变量名称:=值;

由此,将:=的右侧(称为右边缘)的值代入左侧(称为左边缘)的变量。
希望大家注意的是“:=”,而不是“=”。在PL/SQL中,“=”是比较的意思,不是代入。代入是:=。
“比较”和“代入”根据程序语言的不同会有微妙的差异,请注意。
另外,右边不是数值本身也没关系。公式也可以,变量也可以,函数也可以。表示简单的例子。
例如,变量A、变量B均为NUMBER型,有以下记述:

<执行域>
1 A := 10;
2 A := A + 1;
3 B := A;
4 A := A + 1;

※左边标注的数字是便于说明的行号。

根据程序语言的不同,变量中存储的不是数值本身,而是数值指针(位置信息)。
在PL/SQL语言中,变量只是存储的具体的值,而不是变量指针。

第1行只在变量A中代入10。

第2行将变量A的值加1后的值(即11)代入变量A。变量A的值为11。也就是说计算同一变量的值,然后返回到同一变量。

第3行将变量A的值(此时为11)代入变量B。由此,变量B的值与变量A相同为11。也就是说,将变量A的值复制到变量B。

第4行中变量A加1,变量A的值为12,但对变量B的值没有影响,变量B保持为11。

这一章就到此。下一章针对检索SELECT进行说明。

猜你喜欢

转载自blog.csdn.net/niusr_1980_01/article/details/113917618