10.定义并使用变量-标量类型

定义:
在编写pl/sql程序时,可以定义变量和常量;在pl/sql程序中包括有:
1)标量类型(scalar)
2)复合类型(composite)
3) 参照类型(reference)
4)lob(large object)

标量(scalar)---常用类型
在编写pl/sql块时,如果要使用变量,需在定义部分定义变量。
pl/sql中定义变量和常量的语法如下:
identifier [constant] datatype [not null] [:=| default exptr]
identifier:名称
constant:指定常量,需要指定它的初始值,且其值是不能改变的
datatype:数据类型
not null:指定变量值不能为null
:= 给变量或是常量指定初始值
default:用于指定初始值
expr:指定初始值的pl/sql表达式,可以是文本值、其它变量、函数等


标量定义的案例
1)定义一个变长字符串
v_ename varchar2(10);
2)定义一个小数 范围 -9999.99——9999.99
v_sal number(6,2);
3)定义一个小数并给一个初始值为5.4 :=是pl/sql的赋值号
v_sal2 number(6,2):=5.4
4)定义一个日期类型的数据
v_hiredate date;
5)定义一个布尔变量,不能为空,初始值为false
v_valid  boolean not null default false;


标量(scalar)---使用标量
在定义好变量后,就可以使用这些变量。这里需要说明的是pl/sql块为变量赋值不同于其它的编程语言,需要在等号前加冒号(:=)


下面以输入员工号,显示雇员姓名、工资、个人所得税(税率为0.03)为例
declare
--定义常量税率并赋初值
c_tax_rate number(3,2):=0.03;
--定义变量
--用户名
v_ename varchar2(5);
--工资
v_sal number(7,2);
--个人所得税
v_tax_sal number(7,2);
begin
  --执行
  select ename,sal into v_ename,v_sal from emp where empno=&no;
  --计算所得税
  v_tax_sal:=v_sal*c_tax_rate;
  --输出
  dbms_output.put_line('姓名:'||v_ename||' 工资:'||v_sal||' 个人所得税:'||v_tax_sal||' 实际工资:'||(v_sal-v_tax_sal));
  end;

标量(scalar)---使用%type类型
对于上面的pl/sql块有一个问题:
就是如果员工的姓名超过了5字符的话,就会有错误,为了降低pl/sql程序的维护工作量,可以使用%type属性来定义变量,这样它会按照数据库列的类型来确定你定义的变量的类型和长度。
使用方式: 标识符名 表名.列名%type;

例子:
--用户名
v_ename emp.ename%type;
//意思就是定义的变量v_ename的类型和emp这个表的ename这个列的类型保持一致


实例:
--下面以输入员工号,显示雇员姓名、工资、个人所得税(税率为0.03)为例
declare
--定义常量税率并赋初值
c_tax_rate number(3,2):=0.03;
--定义变量
--用户名
v_ename emp.ename%type;
--工资
v_sal number(7,2);
--个人所得税
v_tax_sal number(7,2);
begin
  --执行
  select ename,sal into v_ename,v_sal from emp where empno=&no;
  --计算所得税
  v_tax_sal:=v_sal*c_tax_rate;
  --输出
  dbms_output.put_line('姓名:'||v_ename||' 工资:'||v_sal||' 个人所得税:'||v_tax_sal||' 实际工资:'||(v_sal-v_tax_sal));
  end;
 

猜你喜欢

转载自1124117571.iteye.com/blog/2287228
10.
今日推荐