PLSQL中的内存表--Index By Table

其实内存表有点类似于java中的数组,但是它有比起数组更强大的地方。

1.首先来简单介绍内存表的作用:

  • 使用BINARY_INTEGER 类型构成的索引主键
  • 简单类型 或者用户自定义类型的字段作为具体的数组元素

2.如何来使用内存表类型呢?

定义内存表类型

TYPE type_name IS  TABLE OF 存储类型(number , employees.last_name%TYPE , employees%ROWTYPE , varchar2)

INDEX BY (BINARY_INTEGER,varchar2(80)..)

---varchar2(80)表示下标可以通过字符串来访问,这比java中数组功能强大

声明该类型变量

identifier  type_name

3.内存表中的一些属性和方法

赋值:

identifier(1) := ‘Jams‘    --这是index by binary_integer

identifier(‘A‘) := ‘Jams‘  -- 这是index by varchar2

与java中数组区别就是内存表可以用字符串作为下标

count方法:

identifier.count  --返回内存表中行的数目

exists方法:

identifier.exists(1) --判断下标为1的元素存不存在

first 和 last属性:

first:返回第一行的索引

last: 返回最后一行的索引


first 和 last的用法:

一般使用在遍历内存表的情况

for i in identifier.first .. identifier.last  loop

 ............
end loop


这里必须注意两点:

1.如果内存表中没有任何数据,但是你却通过这种方式遍历它,会报错,所以在遍历前应该用

count方法来做一次判断

2.假如内存表中的数据下标不连续怎么办?

比如 内存表只有identifier(2), identifier(5),

当遍历到下标为1,3,4时,要做异常或报错处理,否则会报错。

这里附带上INDEX BY BINARY_INTEGER的作用

--http://blog.itpub.net/26690043/viewspace-722081/

时间: 2024-12-25 14:29:40

PLSQL中的内存表--Index By Table的相关文章

UE4中使用数据表(Data Table)

本文依据官方文档数据驱动游戏性元素整理而来. 做过游戏的应该都清楚,如果游戏稍微有点规模,那么使用数据驱动来做游戏一般是必不可少的一步,一般也就是策划通过本表的方式来解决.下面我们来简单说一下UE4中如何使用DataTable来实现数据驱动开发. 顾名思义,数据表就是以有意义且有用的方式将各种相关的数据归类的表格, 其中,数据字段可以是任何有效的 UObject 属性,包括资产引用.在设计师将 CSV 文件导入数据表前,程序员必须创建行容器以指示引擎如何解释数据. 这些数据表包含了列名,这些列名

android中清空一个表---类似truncate table 表名 这样的功能 android sqlite 清空数据库的某个表

public void clearFeedTable(){ String sql = "DELETE FROM " + FEED_TABLE_NAME +";"; SQLiteDatabase db = dbHelper.getSQLiteDatabase(); db.execSQL(sql); revertSeq(); dbHelper.free(); } private void revertSeq() { String sql = "update s

mysql中如何创表以及添加各种约束条件

-- 使用数据库hr use hr; -- 在数据库中创建表-- ------------------------------------JOBS表------------------------------------------------------------ 判断数据库中是否存在表JOBSdrop table if exists JOBS;-- 创建表JOBScreate table JOBS ( JOB_ID VARCHAR(10) not null,-- 职位编号,主键 JOB_T

SQL Server 在Alwayson上使用内存表"踩坑"

200 ? "200px" : this.width)!important;} --> 介绍 因为线上alwayson环境的一个数据库上使用内存表.经过大概一个星期监控程序发现了一个非常严重问题这个数据库的日志文件不会截断,已用空间一直在增加(存在定时的每个小时的日志备份),同时内存表数据库文件也无法删除,下面就介绍一下后面我的处理过程. 数据库:SQL Server2014 Enterprise Edition (64-bit) 删除文件 使用一个单独非alwayson环境的数

转:Sql Server中的表访问方式Table Scan, Index Scan, Index Seek

0.参考文献 Table Scan, Index Scan, Index Seek SQL SERVER – Index Seek vs. Index Scan – Diffefence and Usage – A Simple Note oracle表访问方式 Index Seek和Index Scan的区别以及适用情况 1.oracle中的表访问方式 在oracle中有表访问方式的说法,访问表中的数据主要通过三种方式进行访问: 全表扫描(full table scan),直接访问数据页,查找

MySQL 中的临时表和内存表

内存表: 1.通过My.cnf中的max_heap_table_size指定,支持动态指定 2.表定义是存放在磁盘上的,扩展名为.frm,重启不会丢失,数据是存放在内存中的,所以重启会丢失数据 3.不支持BLOB或TEXT列 4.内存表初始化,可以使用--init-file来初始化,避免重启mysql后数据被清空.比如--init-file="/data/mysql/init.sql", init.sql格式为:          use db_test;          selec

powerdesinger中建立一个表后,出现Existence of index的警告

Table Existence of index A table should contain at least one column, one index, one key, and one reference.可以不检查 Existence of index 这项,也就没有这个警告错误了.这是说没有给表建立索引,而一个表一般至少要有一个索引,这是一个警告,不用的话对执行没有影响.不用管它即可. powerdesinger中建立一个表后,出现Existence of index的警告,码迷,m

Lua中的weak表——weak table

弱表(weak table)是一个很有意思的东西,像C++/Java等语言是没有的.弱表的定义是:A weak table is a table whose elements are weak references,元素为弱引用的表就叫弱表.有弱引用那么也就有强引用,有引用那么也就有非引用.我们先要厘这些基本概念:变量.值.类型.对象. (1)变量与值:Lua是一个dynamically typed language,也就是说在Lua中,变量没有类型,它可以是任何东西,而值有类型,所以Lua中没

MySQL 中 You can't specify target table '表名' for update in FROM clause错误解决办法

背景 在MySQL中,写SQL语句的时候 ,可能会遇到 You can't specify target table '表名' for update in FROM clause 这样的错误 错误含义 它的意思是说,不能先 select 出同一表中的某些值,再 update 这个表(在同一语句中),即不能依据某字段值做判断再来更新某字段的值. 解决问题 将select出的结果再通过中间表select一遍,这样就可以解决错误了 MySQL 中 You can't specify target ta