`

内存表使用

 
阅读更多

一、 内存表概念
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,TVirtualTable,TFDMemTable)例子.

    Delphi内存表使用(TdxMemData,TVirtualTable,TFDMemTable)例子.演示在Delphi上使用内存表存储数据的例子。TdxMemData 属于DevExpressVcl控件,TVirtualTable属于UniDAC控件,TFDMemTable属于FireDAC控件。经过测试...

    Delphi内存表使用(TdxMemData,TVirtualTable,TFDMemTable)例子.rar

    演示在Delphi上使用内存表存储数据的例子。TdxMemData 属于DevExpressVcl控件,TVirtualTable属于UniDAC控件,TFDMemTable属于FireDAC控件。经过测试证明,TFDMemTable性能最好!

    利用delphi中的内存表来制作主从表

    下面我们将详细介绍如何使用Delphi的内存表来实现这一功能。 首先,了解主从表的概念。在数据库设计中,主从表(也称为父子表或主键-外键关系)是指两个表之间的一种关联,其中一张表(主表)包含唯一标识记录的...

    SQL语句实现查询SQL Server内存使用状况

    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

    SAP HANA 内存使用分析

    总的来说,SAP HANA的内存使用分析需要从多个角度进行,包括行表和列表的内存使用情况,列存储的内存管理,以及多租户数据库容器和操作系统环境的内存使用情况等。通过这些角度的分析,可以全面了解SAP HANA系统的...

    内存表操作(帮助大家学习)

    在"WebApplication1"这个项目中,可能涉及到的是一个Web应用的内存表操作实践,可能涵盖了如何在Web环境中创建和使用内存表,以及如何通过编程语言(如Java、Python或C#)与数据库交互,实现内存表的增删改查操作。...

    DELPHI XE 10使用内存表的仓库标签打印源码 报表带二维码显示

    通过理解这个源码,你可以掌握内存表的使用,ReportMachine控件的报表设计,以及如何集成二维码生成技术,从而提升你的DELPHI开发技能。在实际工作中,你可以根据具体需求调整和扩展这个模板,以满足各种复杂的标签...

    MySQL内存表的特性与使用介绍

    9. **初始化与恢复**:为了在重启后初始化内存表,可以使用`--init-file`选项指定一个SQL脚本,该脚本会在MySQL启动时运行,将数据写入内存表。 10. **数据丢失处理**:为应对数据丢失,可以编写脚本在查询前检查表...

    memSQL内存表控件

    开发者应该首先阅读这个文件来了解如何正确使用memSQL内存表控件。 3. **key.txt** - 这可能是许可证密钥文件,用于验证和激活控件的使用权。如果没有这个文件,控件可能只能在受限模式下使用,或者需要额外购买才能...

    delphi 内存表FDMemTable1

    9. **数据同步**:如果需要将内存表的数据与数据库同步,可以使用`ApplyUpdates`方法,这通常涉及`TDataSetProvider`组件来连接数据库。 10. **错误处理和事务管理**:`FDMemTable1`支持事务处理,`Begin...

    36.为什么临时表可以重名?1

    内存表使用Memory引擎,数据存储在内存中,系统重启后数据丢失,而临时表则可以使用多种引擎,包括InnoDB和MyISAM,其数据存储在磁盘上,但生命周期仅限于创建它的会话(session)。 临时表的特性如下: 1. **创建...

    通用双向链表以及内存检漏算法

    内存检漏检测算法可能会包括以下策略:记录分配和释放的内存块信息,使用哈希表或关联数组存储这些信息;在分配内存时增加标记,用于追踪内存的来源;或者利用运行时库提供的信息,如GNU的malloc库提供的钩子函数。...

    Mysql构造百万条测试数据

    内存表使用 ENGINE = MEMORY,普通表使用 ENGINE = INNODB。其中,vote_record_memory 表使用了哈希索引(KEY `index_id` (`user_id`) USING HASH),vote_record 表使用了 B-Tree 索引(KEY `index_user_id` (`user...

    模拟空间内存的分配与回收

    - 分配初始内存节点,并将其`IsUse`设置为0,表示未使用。 - 设置`Par_Size`、`Par_No`和`Addr`的值。 - 返回指向链表头部的指针。 2. **初始化首次适应算法的空闲分区链表** (`InitFP()`函数) - **功能**: ...

    基于多链表结构的嵌入式系统内存管理

    - **多链表结构**:所有类型的内存块链表组合起来形成了一个多链表结构,这样可以根据实际需求快速找到合适的内存块。 #### 内存分配与释放算法 - **内存分配算法**: - 当需要分配内存时,首先确定所需内存的...

    ORACLE内存结构与表空间知识

    ### ORACLE内存结构与表空间知识 #### 一、Oracle的服务方式 Oracle提供了三种不同的服务方式,每种方式都有其特定的应用场景和内存管理特点。 ##### 1. 专用服务器 (Dedicated Server) - **服务流程**:当...

    操作系统课程设计 实现 可变分区最佳适应算法 1输入作业数及大小 2查看内存使用情况 3释放内存 4查看空闲区表的情况

    这种算法在动态分配内存时,旨在优化内存的使用,减少碎片并最大化空间利用率。 可变分区最佳适应算法是一种动态内存分配策略,其主要目标是在分配内存给新作业时,找到当前所有空闲分区中最小但仍能满足作业需求的...

    Java内存机制学习和使用

    ### Java内存机制学习和使用 #### 一、Java内存机制概览 Java内存管理是Java开发人员必须掌握的核心概念之一。良好的内存管理不仅能够提升应用性能,还能避免常见的内存泄漏问题。本文旨在深入探讨Java内存机制,...

    36为什么临时表可以重名?.pptx

    内存表使用Memory引擎,数据存储在内存中,而临时表可以使用InnoDB或MyISAM等其他引擎,数据会写入磁盘。无论哪种类型,它们都在会话结束或者MySQL服务重启时自动清除,无需手动删除。 在实际应用中,临时表常用于...

Global site tag (gtag.js) - Google Analytics