定义:
在编写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;
- 浏览: 214971 次
- 性别:
- 来自: 江西
最新评论
-
闷骚的小老头:
这个和eclipse右什么区别么,都会啊这个
如何在Android Studio中创建一个selector.xml文件 -
闷骚的小老头:
导入Model就ok
如何在Android Studio中导SlidingMenu框架到项目中 -
gaojingsong:
七天玩转oracle,韩顺平玩转oracle,有些东西过时了, ...
oracle表的数据类型
相关推荐
在程序中定义变量、常量和参数时,则必须要为它们指定PL/SQL数据类型。在编写PL/SQL程序时,可以使用标量(Scalar)类型、复合(Composite)类型、参照(Reference)类型和LOB(LargeObject)类型等四种类型。在PL/...
第一章 Perl概述............................................................................................................................10 1.1 从头开始.................................................
实用C代码
套件安装 努吉特 PM> Install-Package MathParser.org-mXparser -Version 4.4.2 Maven ...标量-免费版本 Scalar Pro-全付费版本 MathParser.org-mXparser mXparser-可选捐赠 mXparser-适用于JAVA,And
4.2 在模板中定义变量 ..................................................................................... 50 4.3 命名空间 ................................................................................
PART I – 概览.........................................................................................................................11 第 1章 – DB2 Express-C是什么?..................................
4.2 在模板中定义变量 ..................................................................................... 51 4.3 命名空间 ................................................................................
标量变量 .............................................................................................................................................. 55 关联数组 .......................................
4.2 在模板中定义变量 ..................................................................................... 50 4.3 命名空间 ................................................................................
实用C代码
资源简介 第 1章 – DB2 Express-C是什么?...................................................4.1.1 环境变量......................................................................................................
robotframework学习笔记之 学习笔记之———变量 变量 Robot Framework的变量分为标量, 列表和字典, 分别使⽤语法格式 ${SCALAR}, @{LIST} 和 &{DICT} 来定义。 此外, 环境变量可以直接使⽤语法 %{ENV_VAR} 来获取。...
dimvar 变量可以将单个或多个值(双)与• 一个独特的维度,所谓的独特的“dimvar”变量•或多个维度,即所谓的混合“ dimvar”变量该功能由“dimvar”类实现并由“dimDefs”函数支持。 该类提供了数学运算、维数...
而RECORD类型中定义分二步:a. 所有的成员变量都要申明; b. 实例化变量; 可以代替RECORD类型. 5. TABLE类型 TYPE tabletype IS TABLE OF type(类型名,要保存成的数据类型) INDEX BY BINARY_INTEGER; 例:...
4.1.1. 为持久化成员变量声明读写属性 4.1.2. 实现一个默认的构造器(constructor) 4.1.3. 提供一个标识属性(identifier property)(可选) 4.1.4. 使用非不可继承的(non-sealed)类以及虚方法(virtual methods...
PUSQL基础 3.1 PL/SQL块简介 3.1.1 PL/SQL块结构 3.1.2 PL/SQL块分类 3.2 定义并使用变量 3.2.1 标量变量 3.2.2 复合变量 3.2.3 参照变量 3.2.4 LOB变量 3.2.5 非PL...
1.定义常量define(“CONSTANT”, “Hello world.”);...3.可变变量(使用两个美元符号($)) $$a = "world"; 两个变量都被定义了: $a 的内容是“hello”并且 $hello 的内容是“world”。 因此,可以表述为: echo
4.1.1. 为持久化成员变量声明读写属性 4.1.2. 实现一个默认的构造器(constructor) 4.1.3. 提供一个标识属性(identifier property)(可选) 4.1.4. 使用非不可继承的(non-sealed)类以及虚方法(virtual methods...
1.定义常量define(“CONSTANT”, “Hello world.”);...可变变量(使用两个美元符号($)) $$a = “world”; 两个变量都被定义了: $a 的内容是“hello”并且 $hello 的内容是“world”。 因此,可以表述为: echo