玩转Oracle-PLSQL定义并使用变量_第1页
玩转Oracle-PLSQL定义并使用变量_第2页
玩转Oracle-PLSQL定义并使用变量_第3页
玩转Oracle-PLSQL定义并使用变量_第4页
玩转Oracle-PLSQL定义并使用变量_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、.:.;、引见:在编写pl/sql程序时候,可以定义变量和常量,在pl/sql中包括有:标量类型scalar复合类型composite参照类型referenceloblarge object;、标量:scalar常用的类型:在编写pl/sql的时候,假设要运用变量,需求在定义部分定义变量;pl/sql中定义变量和常量的语法如下:identifier constant datatype not null :=|default exptidentifier :称号;constant :指定常量,需求指定他的初始值,而且他的值是不可以改动的;datatype:数据类型;not null ;指定变量不

2、能为null;:= 给变量或是常量指定初始值;default:用于指定初始值;expr:指定初始值的pl/sql表达式,可以是文本、其他变量、函数等;定义一个变长字符串:v_ename varchar220;定义一个数:v_sal number6,3;定义一个数并给定初始值:v_sal number5,3:=5.4定义一个日期类型的数据:v_hitedate date;定义一个bool变量,不能为null,初始值为false;v_valid boolean not null default false;、标量:运用标量在定义好变量后就可以运用这些边玲了,这里需求阐明的是pl/sql块为变量赋值

3、不同于其他编程言语,需求运用:=符号;SQL -下面以输入员工号,显示员工姓名等信息;SQL declare 2 c_tax_rate number(3,2):=0.03; 3 -用户名; 4 v_name varchar2(5); 5 v_sal number(6,2); 6 v_tax_sal number(6,2); 7 begin 8 -执行 910 select ename ,sal into v_name , v_sal from emp where empno=&no;11 -计算所得税12 v_tax_sal:=v_sal*c_tax_rate;13 -输出;14 dbms_o

4、utput.put_line(Name is : | v_name | sal is |v_sal| tax is |v_tax_sal);15 end;16 /Enter value for no: 7788old 10: select ename ,sal into v_name , v_sal from emp where empno=&no;new 10: select ename ,sal into v_name , v_sal from emp where empno=7788;Name is : SCOTT sal is 3000 tax is 90PL/SQL procedur

5、e successfully completed.、标量:运用%type类型;对于上面的pl/sql块有一个问题:假设员工的姓名操过了5个字符的话救护出错,为了降低pl/sql程序的维护任务量,可以运用%type属性定义变量,这样他会按照数据库列来确定他定义的变量类型和长度;标识符称号 阐明.列名%type;SQL -下面以输入员工号,显示员工姓名等信息;SQL declare 2 c_tax_rate number(3,2):=0.03; 3 -用户名; 4 v_name emp.ename%type; 5 v_sal emp.sal%type; 6 v_tax_sal number(6,2

6、); 7 begin 8 -执行 910 select ename ,sal into v_name , v_sal from emp where empno=&no;11 -计算所得税12 v_tax_sal:=v_sal*c_tax_rate;13 -输出;14 dbms_output.put_line(Name is : | v_name | sal is |v_sal| tax is |v_tax_sal);15 end;16 /Enter value for no: 7788old 10: select ename ,sal into v_name , v_sal from emp

7、where empno=&no;new 10: select ename ,sal into v_name , v_sal from emp where empno=7788;Name is : SCOTT sal is 3000 tax is 90PL/SQL procedure successfully completed.SQL、复合变量composite;、引见:用于存放多个值的变量。主要包括下面几种:pl/sql记录;pl/sql表;嵌套表;varray;、pl/sql记录:类似于高级言语中的构造体,需求留意的是,当援用pl/sql记录成员时候,必需加记录变量作为前缀记录变量.记录成

8、员如下;SQL -pl/sql记录实例;SQL declare 2 -定义复合pl/sql记录类型;emp_record_type 3 type emp_record_type is record( 4 name emp.ename%type, 5 salary emp.sal%type, 6 tittle emp.job%type); 7 -复合类型定义终了; 8 9 -定义一个复合类型的变量sp_record,其类型是emp_record_type;10 sp_record emp_record_type;1112 begin13 select ename,sal,job into sp_

9、record from emp where empno=7788;14 dbms_output.put_line(Name : |sp_);15 end;16 /Name : SCOTTPL/SQL procedure successfully completed.、pl/sql表:相当于高级言语中的数组,但是需求留意的是在高级言语中数组的下表不能为负数,而pl/sql是可以为负数的,并且表元素的下标没有限制,实例如下:SQL -pl/sql表实例;SQLSQL declare 2 -定义了一个pl/sql表类型:sp_table_type , 3 -该类型是用于存放em

10、p.ename%type类型的数组; 4 -index by binary_integer:代表下标是按照整数来排序的; 5 type sp_table_type is table of emp.ename%type index by binary_integer; 6 7 -定义了一个sp_table_type类型的变量:sp_table; 8 sp_table sp_table_type; 910 begin11 select ename into sp_table(0) from emp where empno=7788;12 dbms_output.put_line(Name : |s

11、p_table(0);13 end;14 /Name : SCOTTPL/SQL procedure successfully completed.阐明:sp_table_type:pl/sql表类型;emp.ename%type 指定了表的元素类型和长度;sp_table:为pl/sql表变量;留意:假设上面的块将where子句去掉,会怎样样呢?这样就会出错,这是就应该运用参照变量;当然,复合变量还有很多,比如复合变量:嵌套表nested table;复合变量:变长数组varray;、参照变量:引见:参照变量是指用于存放数值指针的变量,经过运用参照变量,我们可以使得运用程序共享一样的对象,从

12、而降低占用的空间,在编写pl/sql程序的时候,可以运用游标变量ref cursor和对象类型变量ref obj_type)两种参照变量;参照变量:ref cursor游标变量;运用游标时候,当定义游标时候,不需求指定相应的select语句,但是当运用游标open的时候就需求指定select语句,这样,一个游标就和一个select语句结合起来了:实例:、请用pl/sql编写一个块:可以输入部门号,并显示该部门一切员工姓名和工资;-请用pl/sql编写一个块:可以输入部门号,并显示该部门一切员工姓名和工资;declare-定义游标类型:sp_emp_cursor;type sp_emp_cursor is ref cursor;-定义一个游标变量;test_cursor sp_emp_cursor;-定义变量:v_ename emp.ename%type;v_sal emp.sal%type;begin-执行-把test_cursor和一个select结合;-相当于将test_cursor指向有select查询前往的结果集;open test_cursor for select ename , sal from emp where deptno=&no;-这时候我们可以循环取出结果集中的结果了;-开场循环体;loop-取值; fetch t

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论