一、 内存表概念
1、PL/SQL表类似于C语言中的数组。如果要声明一个PL/SQL表,要先定义该表类型,然后在声明属于该类型的变量。
2、理论上,数据库数据空间有多大,我们的内存表就可以存储多大的数据,就是说他和我们的物理表是相同的,我们可以把物理表的数据完全拷贝到内存表中。
3、PL/SQL表的元素没有必要按照特定的次序排列,因为他们不是象数组那样连续存储在内存中,元素可以按照任意键值进行插入。
4、PL/SQL表的键值(KEY)没有必要是顺序的。表所占用的内存并不依赖于键所使用的数值。
二、 表的属性
count:返回PL/SQL表中行的当前数目。
delete:删除表中的行。
exists:如果指定的表项在表中存在那么返回ture。
first:返回表中第一行的索引。
last:返回表中最后一行的索引。
next:返回表中指定行的下一行的索引。
prior:返回表中指定行的上一行的索引。
三、案例
-- Created : 8/16/2012 3:00:03 PM
-- Purpose : 内存表使用
--1.建立表类型
CREATE OR REPLACE TYPE ty_obj IS OBJECT ( p_empno VARCHAR2 (50)
, p_ename VARCHAR2 (50)
, job VARCHAR2 (50)
);
--2.建立数组
CREATE OR REPLACE TYPE ty_objtab IS TABLE OF ty_obj;
--3.建立函数
CREATE OR REPLACE FUNCTION func_info RETURN ty_objtab
IS
v_ty_objtab ty_objtab := ty_objtab(); --返回内存表
BEGIN
FOR cur IN (SELECT * FROM emp) LOOP
v_ty_objtab.extend;
v_ty_objtab(v_ty_objtab.count) := ty_obj(cur.empno,cur.ename,cur.job);
END LOOP;
RETURN v_ty_objtab;
END func_info;
--4.测试1
--查询出所有结果
SELECT * FROM TABLE(func_info);
--查询出部分结果
DECLARE
vtab ty_objtab;
BEGIN
vtab := func_info;
dbms_output.put_line(vtab(1).p_empno);
END;
--查询结果行数
DECLARE
vtab ty_objtab;
BEGIN
vtab := func_info;
dbms_output.put_line(vtab.count);
END;
--综合操作
DECLARE
vtab ty_objtab;
BEGIN
vtab := func_info;
FOR i IN 1..vtab.count LOOP
--修改内存表中数据
vtab(i).p_ename := vtab(i).p_ename || 'mm';
--读取内存表中数据
dbms_output.put_line(vtab(i).p_ename);
--测试表明 操作成功
END LOOP;
END;
分享到:
相关推荐
演示在Delphi上使用内存表存储数据的例子。TdxMemData 属于DevExpressVcl控件,TVirtualTable属于UniDAC控件,TFDMemTable属于FireDAC控件。经过测试证明,TFDMemTable性能最好!
Delphi内存表使用(TdxMemData,TVirtualTable,TFDMemTable)例子.演示在Delphi上使用内存表存储数据的例子。TdxMemData 属于DevExpressVcl控件,TVirtualTable属于UniDAC控件,TFDMemTable属于FireDAC控件。经过测试...
SELECT type,--Clerk的...sum(awe_allocated_kb)as awe_Allocated_kb,--开启AWE后使用的内存 sum(shared_memory_reserved_kb)as sm_Reserved_kb,--共享的保留内存 sum(shared_memory_committed_kb)as sm_Committed_k
DELPHI XE 10 使用内存表的仓库标签打印源码,使用ReportMachine控件做的报表,带二维码显示
临时表和内存表都可以人工创建,但临时表更多的作用是系统自己创建后,组织数据以提升性能,如子查询,临时表在多个连接之间不能共享。这里只讨论内存表
该详细介绍了关于SAP HANA 数据库内存使用的分析,可直接通过SQL 语句进行分析,适合SAP 技术顾问或 Basis相关人员,
该程序代码可以将内存表(Datatable)内的数据导出到外部Access内,外部的Access可以是现存的,或者是通过程序新建,然后将数据导出到数据库中的表内。该程序调试对相关的方法进行了时间的测定,可以对相关的方法...
一个自己做的最简单的hash表,主要用于判断某关键字是否存在,占用内存尽可能的最小,原生的hashTable占用内存太大了,适合大数据,使用的时候请注意修改height值,一般设为数据量的200分之一至400分之一即可,如果...
使用原生ADO+DataSet内存表进行分页显示.docx
用万用表测量内存芯片的方法,免费使用的,好了评价一下。
可变分区最佳适应算法 用c++实现 1输入作业数及大小 2查看内存使用情况 3释放内存 4查看空闲区表的情况 还包含了一段linux代码
"内存救星"会把那些"不常用",但是"必须运行的程序"的内存使用量降到最低,这和传统的"内存整理"是完全不同的!您会有更多空闲内存来运行其它程序,速度会更快。 无插件!无广告!绝对绿色! 传统内存整理...
文中将为您提供如何管理内存的细节,然后将进一步展示如何手工管理内存,如何使用引用计数或者内存池来半手工地管理内存,以及如何使用垃圾收集自动管理内存。 为什么必须管理内存 内存管理是计算机编程最为基本的...
转自:http://www.cppblog.com/lmlf001/archive/2007/09/08/31858.html
(1)使用内存分配获得128MB块,写入0无异常,此时当前系统的各个内存值减少; 释放后,输出此时系统的内存情况。 (2)使用虚拟分配获得物理128MB块,写入0也无异常,当前体统的各个内存值减少;释放后,输出此时...
Oracle已经通过增强v$process查看表来实现内存监控。v$process查看表里的新数据列允许你显示当前所有Oracle进程的程序全局区(PGA)区域的细节。PGA是内存里的一个专门区域,被单独的进程用来执行内存密集型函数,...
MS SQLSERVER,oracle 主流数据库中临时表的使用
为正常函数malloc的封装使用的时候与malloc无特殊差别,唯一差别就是会将申请的内存 注册到plist链表中, 最后函数退出的时候统一调用 cgfree 与free函数类似不使用参数 调用cgfree后会将注册的所有内存全部释放,...
支持替代malloc, 从heap中分配系列内存池:8-8K,每个内存池的个数可以调整 也支持单独创建与使用一个额外的大小指定的内存池 从kernel中移植链表,及实际使用
(1)能够以空闲分区表的形式显示某一时刻内存空间的使用情况。 (2)能够创建进程即输入进程信息,包括进程名称和进程需要的内存量, 系统要给进程分配一个惟一的进程标识(用一个整数表示)。 (3)能够显示某一...