标量变量

 标量变量是指只能存放单个数值的变量。当编写pl/sql程序时,最常用的变量就是标量变量。当定义标量变量时,必须要指定标量数据类型。标量数据类型包括数字类型、字符类型、日期类型和布尔类型,每种类型又包含有相应的子类型,例如number  类型包含有integer  positive等子类型。

1、常用标量类型

 (1)varchar2(n)

          该数据类型用于定义可变长度的字符串,其中n用于指定字符串的最大长度,其最大值为32767字节。当使用该数据类型定义变量时,必须要指定长度。需要注意,当在pl/sql块中使用该数据类型操纵varchar2表列时,其数值的长度不应该超过4000字节。

  (2)char(n)

          该数据类型用于定义固定长度的字符串,其中n用于指定字符串的最大长度,其最大值为32767字节。当使用该数据类型定义变量时,如果没有指定n 则其默认值为1.需要注意,当在pl/sql块中使用该数据类型操纵char表列时,其数值的长度不应该超过2000字节。

   (3)number(p.s)

    该数据类型用于定义固定长度的整点数和浮点数,其中p表示精度,用于指定数字的总位数;s表示标度,用于指定小数点后的数字位数。例如,假定定义了变量number(6,2),那么整数位属最大应该是4位。

   (4)date

    该数据类型用于定义日期和实践数据,其数据长度为固定长度(7字节)。但需注意,当给date变量赋值时,数据必须要与日期格式日起语言匹配。

   (5)timestamp

     该数据类型是oracle9i新增加的数据类型,他也用于定义日期和时间数据。给timestamp变量赋值的方法与给date变量赋值的方法完全相同。但当显示timestamp 变量数据时,不仅会显示日期,而且还会显示时间和上下午标记。

  (6)long和long raw

     long数据类型用于定义变长字符串,类似于varchar2数据类型,但其字符串的最大长度为32760字节;long  raw 数据类型用于定义变长的二进制数据,其数据最大长度为32760字节。

   (7)boolean

        该数据类型用于定义布尔变量,其变量的值为true ,false 或null  。需要注意,该数据类型是pl/sql数据类型,表列不能采用该数据类型。

   (8)binary_integer

      该数据类型用于定义整数,其数值范围在-2147483647和2147483647之间。在oracle9i之前,当在pl/sql块中定义pl/sql表时,必须使用该数据类型作为下标的数据类型。需要注意,该数据类型是pl/sql数据类型,表列不能采用该数据类型。

   (9)binary_float 和binary_double

    binary_float 和binary_double 是oracle 10g新增加的数据类型,分别用于定义单精度的浮点数和双精度的浮点数。这两种数据类型主要用于高速的科学计算,当为binary_float类型的变量赋值时,应该带有后者f(例如1.f);当为binary_double类型的变量赋值时,应该带有后者d(例如3.00085d)。

2  定义标量变量

   当编写pl/sql程序时,如果要引用变量变量,必须首先在定义部分定义变量变量,然后才能在执行部分或例外处理部分中使用这些标量变量。

   (1)语法

在pl/sql块中定义变量和常量的语法如下:

    identifier [constant]  datatype  {not  null } {:= |  default expr}

identifer  用于指定变量或常量的名称。改变。

datatype:用于指定变量或常量的数据类型。

not  null  :用于强制初始化(不能为null)。当指定你not  null 选项时,必须要为变量提供数值。

:=:用于为变量和常量指定初始值。

default:用于为变量和常量指定初始值。

expr:用于指定初始值的pl/sql表达式,可以是文本值、其他变量、函数等。

 (2)定义标量变量示例

     当定义标量变量时,必须要使用标量数据类型。示例如下:

       v_ename    varchar2(10);

    v_sal             number(6,2)

  v_balance             binary_float;    oracle    10g 新数据类型

  v_tax_rate        constant   number(3,2)  :=5.5;

  v_hiredate    date
  v_valid    boolean   not null  defaule  false;

    如例所示,以上语句定义了五个变量(v_ename,v_sal ,v_balance,v_hiredate,v_valid)

和一个常量(c_tax_rate),并且为变量v_valid 提供了初始值。需要注意,如果在定义变量时没有制定初始值,那么变量初始值为null.

3  使用标量变量

      当在定义部分定义了标量变量之后,在执行部分和例外处理部分可以引用这些标量变量。

需要注意,在pl/sql块中为变量赋值不同其它编程语言,必须要在等号前加冒号(:=)。

下面以输入雇员号显示雇员姓名、工资、个人所得税为例,说明在pl/sql块中使用标量变量的方法如下:

set  serverout  on

   declare
v_ename  varchar2(5);
v_sal  number(6,2);
c_tax_rate  constant  number(3,2) :=0.03;
v_tax_sal  number(6,2);
begin
 select ename ,sal into  v_ename,v_sal  from emp  where  deptno=&eno;
v_tax_sal :=v_sal*c_tax_rate;
dbms_output.put_line('雇员名:' ||v_ename);
dbms_output.put_line('雇员工资:'||v_sal);
dbms_output.put_line('所得税:'||v_tax_sal);
end;
/

输入 eno 的值:  7788
原值    7:   select ename,sal into v_ename,v_sal from  emp where empno=&eno;
新值    7:   select ename,sal into v_ename,v_sal from  emp where empno=7788;
雇员名:SCOTT
雇员工资:2000
所得税:60

PL/SQL 过程已成功完成。

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25607042/viewspace-691393/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/25607042/viewspace-691393/

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值