免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
在PL/SQL中处理变量:l 在声明部分声明和初始化变量l 在执行部分为变量赋新值,或在表达式中使用变量l 在异常处理部分也可以使用变量l 通过参数把值传递到PL/SQL 块中l 通过输出变量或者参数将值传出PL/SQL块PL/Sql中的变量类型:l 简单变量l 复合(组合)变量简单变量:简单变量不包括任何组件,只能保存一个值简单变量类型:基本类型包括三大类:字符,数字,日期BINARY_INTEGER 整形数字NUMBER (precision, scale) 数字类型 (数值长度、小数位数)CHAR (maximum_length) 定长字符类型VARCHAR2(maximum_length) 变长字符类型DATE 日期类型LONG 长字符类型LONG RAW 长二进制类型CLOB/BLOB/BFI 大对象类型(字符大对象,二进制大对象,操作系统文件大对象) BOOLEAN 布尔类型,有效值为 TRUE,FALSE,NULL 简单变量的声明:v_gender CHAR(1);v_count BINARY_INTEGER := 0;v_total_sal NUMBER(9,2) := 0; 9表示数据长度,2表示保留小数位v_order_dateDATE := SYSDATE + 7; 天数+7c_tax_rate CONSTANT NUMBER(3,2) := 8.25;v_valid BOOLEAN NOT NULL := TRUE;复合变量: 复合变量也叫做组合变量。在复合变量中包含多个内部的组件,每个组件都可以单独存放值。一个复合变量可以存放多个值 与简单变量类型不同,复合变量类型不是数据库中已经存在的数据类型,所以复合变量在声明类型之前,首先要创建使用到的复合类型,然后将变量声明为复合变量 复合类型被创建后,可以被使用多次,定义多个变量复合变量类型:l 表类型 tablel 记录类型 record表类型:TABLE: 表类型类似于其他编程语言中的数组类型 由两个组件组成:1. 数据类型为BINARY_INTEGER(整形数字)的主键2. 数据类型为一个确定的简单类型的列 Table类型没有长度限制,可以动态增长。表类型中的第二部分类似与数组中的值,这个部分必须是一个已经确定的简单类型,不能是其他的复合类型 表类型的结构很像数组。第一部分:是一个按1递增的整形数字,起到数字索引的作用,第二部分:使一种确定的简单类型,用来存放每个索引号对应的具体的数值PL/SQL TABLE 结构:声明一个PL/SQL TABLE:-varchar2(4) 和 empl.last_name%typedeclare type name1_table_type is table of varchar2(4) index by binary_integer; type name2_table_type is table of empl.last_name%type index by binary_integer; name1_table name1_table_type; name2_table name1_table_type; begin name1_table (1):=大学; name1_table (2):=大本; name2_table (1):=88; name2_table (2):=55; dbms_output.put_line(name1_table (1)| | name1_table (2); -大学 大本 dbms_output.put_line(name1_table (2)| | name2_table (2); -大本 55end;记录类型 RECORDS: 复合类型中的RECORDS类型是由多个组件组成的一种类型。包含一个或几个组件,每个组件称为一个域(FIELD),域的数据类型可以是简单变量类型、另一个RECORD类型或PL/SQL的TABLE类型。 在使用RECORD变量时把多个域的集合作为一个逻辑单元使用,对记录类型变量赋值或引用,都需要使用“记录变量名.域名”的方式来实现。 主要用于从表中取出查询到的行数据。PL/SQL RECORD结构: 记录类型可以包含一个或多个域,每个域相当于记录类型变量的一个属性.在使用记录变量类型时,实际上是对记录类型变量的属性进行操作.每个域都可以是不同的数据类型,存放不同类型的数据声明PL/SQL RECORD:语法: TYPE name_record_type IS RECORD(field_name1 field_typeNOT NULL :=|DEFAULT expr, field_name2 field_typeNOT NULL :=|DEFAULT expr,.); identifiertype_name;例子:. TYPE emp_record_type IS RECORD (last_nameVARCHAR2(25), first_nameVARCHAR2(25), salNUMBER(8) ); emp_recordemp_record_type;.declare type table_type is table of varchar2(32) index by binary_integer; type record_type is record ( name varchar2(32), sex table_type ); v_ceshi record_type;begin v_ceshi.sex(1):=男; v_ceshi.sex(2):=女; v_:=OK; dbms_output.put_line(v_ceshi.sex(1)| |v_ceshi.sex(2)| |v_);end;-男 女 OK另一种声明变量类型的方法:%TYPE与%ROWTYPE:除了像前面那样直接为变量声明一个确定的简单类型或者已经创建好的复合类型外,PL/SQL也支持另外的两种声明变量类型的方法,通过%TYPE和%ROWTYPE属性来声明变量类型%TYPE 属性:通过%TYPE类型声明新变量的类型,实际上就是将参照的变量或表中的字段类型作为新变量的类型,新变量的类型与它所参照的类型完全相同,并且保持同步可以作为%TYPE的前缀的可以是数据库表里面的一列前面声明的变量名称PL/SQL在运行程序时确定变量的数据类型和大小使用%TYPE,可以声明简单类型,也可以声明表类型使用%TYPE 属性的好处:1. 可能不知道数据库中字段的数据类型2. 数据库中字段的数据类型可以在运行时已被改变3. 和前面声明过的变量的类型保持一致%TYPE属性:例子declare v_sal emp.sal%type; v_row emp%rowtype; v_count number(7,2):=0; v_count1 v_count%type;begin select sal into v_sal from emp where ename=FORD; select * into v_row from emp where empno=7369; Dbms_Output.put_line(v_sal); Dbms_Output.put_line(v_count); Dbms_Output.put_line(v_count1); Dbms_Output.put_line(v_row.empno| |v_row.ename| |v_row.job| |v_row.sal);end;-3000-0-7369 SMITH CLERK 800%ROWTYPE属性: 与%TYPE作用类似,用于定义不确定的类型 变量类型将定义为由数据库的表的字段集合构成的RECORD类型 %ROWTYPE的前缀是数据库的表名(或视图),或者另一个已经定义好的RECORD变量 RECORD中的域,与表的字段的名称,个数,数据类型,以及长度完全相同,可以用来存放从表中取出的一条记录的所有的字段值(select * from 表) v_dept dept%rowtype; %ROWTYPE 属性:优点 数据库中表字段的数据类型和数目可能不知道 数据库中表字段的个数和数据类型会在运行中改变declare
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论