PLSQL程序设计(基础篇) 联系客服

发布时间 : 星期一 文章PLSQL程序设计(基础篇)更新完毕开始阅读2777a8e0960590c69ec376b2

不同的数据结构使用,如记录是单行多列时使用,其他三个是多行单列,行和列就代表数据库表的行和列,慢慢体会啊… 记录: 记录,用于存储单行多列,即数据库表中的一条记录。 记录的定义有两中格式,一种是自定义记录类型,然后通过自定义类型定义;一种是通过表或游标的%ROWTYPE属性定义,还记得字段的%TYPE么,差不多。游标在后文中介绍。 自定义: TYPE rname_type IS RECORD ( col1 CTYPE, col2 CTYPE, col3 CTYPE ); ranme rname_type; 光说不练犯晕啊,呵呵,下面就看一些记录的应用吧。 源码record.tst: -- Created on 2010-4-27 by Quasar declare --通过自定义和%ROWTYPE属性定义变量 type emp_basic_record is record ( eno emp.empno%type, empname emp.ename%type, 13 empjob emp.job%type ); emp_basic_info emp_basic_record; emp_detail_info emp%rowtype; begin select empno, ename, job into emp_basic_info from emp where empno = 7788; dbms_output.put_line('员工7788基本信息:'); dbms_output.put_line('姓名:'||emp_basic_info.empname); dbms_output.put_line('工作:'||emp_basic_info.empjob); --来了一个新的scott员工 select ename, job, mgr, sal into emp_detail_info.ename, emp_detail_info.job, emp_detail_info.mgr, emp_detail_info.sal from emp where empno = 7788; emp_detail_info.empno := 8899; emp_detail_info.hiredate := sysdate; --入职吧 14 insert into emp values emp_detail_info; commit; dbms_output.new_line; dbms_output.put_line('入职员工:'||emp_detail_info.empno); --老的scott受不了小的scott,让他改名为 lit scott emp_detail_info.ename := 'lit scott'; update emp set row = emp_detail_info where emp.empno = 8899; commit; dbms_output.new_line; dbms_output.put_line('入职员工改名为:'||emp_detail_info.ename); --小scott被fire了 delete from emp where emp.empno = emp_detail_info.empno; commit; dbms_output.new_line; dbms_output.put_line('员工离职,是谁?'||emp_detail_info.ename); end; 运行结果: 员工7788基本信息: 姓名:SCOTT 15 工作:ANALYST 入职员工:8899 入职员工改名为:lit scott 员工离职,是谁?lit scott 以上的代码说明了记录类型的变量在select into、insert、update、delete中的应用,极其记录子元素的使用。其中有个新的关键自,就是row代表表中的一行,猜也猜到了吧! 集合: PL/SQL表(传统叫做索引表,又叫index_by table),是一种PL/SQL特有的、单维的、无容量限制的、松散存储的列表结构。用于存储多行单列的数据,有点儿类似高级语言中的数组,而记录跟C语言中的结构体类似。不可以作为表的字段类型。 注意: 在Oracle9i以后,叫做PL/SQL表了,因为索引的类型不再局限在binary_integer了,可以是varchar2和pls_integer。也叫做关联表(associative table). 下面就看看怎么使用吧! 源码plsqltable.tst: -- Created on 2010-4-27 by Quasar 16