关于类似与C的数组问题!

[复制链接]
查看11 | 回复4 | 2005-10-30 17:05:33 | 显示全部楼层 |阅读模式
在近期学习ORACLE的过程中,一直对ORACLE存在困惑,为什么没有象C语言中一样的数组类型呢?虽然,有所谓的可变数组和嵌套表,但是这些数据类型必须和表相结合才能使用.无法在内存中使用他们.比如说,我要处理大批数据,而处理这些数据的时候又是逐条处理,当处理第一条时,可能表中没有相同的数据,所以我要将此记录插入表,但是处理第N条时,刚好从表中得到这条数据,就要修改,如果有类似C语言的数组,我第一次处理完,不插入表中,而是暂时存放在内存中,这样第N次就可以直接修改内存中的这条数据了,直到处理完这批数据时,整体送入数据库.这样,我个人认为减少了对数据库的操作,可以提高程序的性能.
上述,是我在编写存储过程时遇到的一个问题,希望大虾能够指点一二.
BTW:如何解决我在送如这批数据时,如果表中已经存在我就更新,不存在就插入,注意是一批数据,而且尽量减少对数据库表的操作.
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
数据库的类型和C是两个概念,不能混同。
你可以参考一下ORACLE的HOST ARRAY方面的资料,你应该可以找到好的解决方法。
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
将数据全部选入内存再进行查找和直接从数据库中查找速度是一样的,甚至直接从数据库查找,速度还会更快一些。但是,对于插入和修改,我认为如果不一些临时数据暂时放入内存,尽量减少对数据库的操作,速度一定还会提高,待测试后,再给出结论!
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
table类型不就是很像c中的数组的嘛?
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
需要用insert into 才能保存数据,而数组应该可以直接用=就可以赋值,不过我已经得到了经过三次定义得到类似于数组类型的定义,不知道还有没有其他更加简洁的方法?
TYPE cs ISRECORD
(
col1
varchar2(8),
col2
number(2)
);
type tab_cod is table of cs index byBINARY_INTEGER;
v_tab tab_cod;
以下是引用他的方法:
v_tab(i).col1:=col;
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行