Oracle中有象SQL Server中的Select into,生成一个新表的语句吗?(50分)

  • 主题发起人 主题发起人 zhbforce
  • 开始时间 开始时间
Z

zhbforce

Unregistered / Unconfirmed
GUEST, unregistred user!
Oracle中似乎不支持直接的select into语句,自动建立一个新表,并将符合条件的
记录插入,请大家帮个忙。
 
create table test as select * from yourtable?
这个行吗?
 
zhangkan 的方法是对的!这是oracle 中能够自动建立一个新表,并将符合条件的记录插入
的唯一方法。
 
对不起,还有一个小问题: 不知道你们用没用过MySQL, MySQL中有个很好用的SQL子句:
select ... from ... where ... limit n/m 可以将检索到的记录进行分页,对于返回
记录条数太多的记录集的查询,非常有用,可以明显的降低查询的时间与内存的消耗。
我在DELPHI中打开大富翁论坛的离线数据库的时候,耗了我整整200MB的内存,希望有
相类似的语句可以实现。备注:通过先打开再移动数据的方法是不可取的。
 
ORACLE可以用ROWNUM,
SELECT ... FROM ... WHERE ... AND ROWNUM >= N AND ROWNUM <= M;
或者 BETWEEN子句。
 
那么,SQL Server和Access呢 ?
为什么Delphi中的ADODataSet控件中的Maxrecords,和CacheSize两个属性不好用?
如果那两个属性可以起作用的话,不就可以实现记录分页的功能吗?
 
zhang16,
你的方法在ORACLE是行不通的
ROWNUM:是根据返回的记录来确定ROWNUM号的
要实现分页功能,可用:
SELECT * FROM
(SELECT ROWNUM RI_ID FROM PRODUCT)
WHERE RI_ID>=N AND RI_ID<=M

通过N,M可进行分页
 
我也发现了zhang16的方法有问题,用这种方法返回记录时,当起始记录号为1时好用,当
起始记录大于1时就不能返回记录了。

zsp,帮个忙,能回答一下SQL Server和Access的记录分页问题。
为什么Delphi中的ADODataSet控件中的Maxrecords,和CacheSize两个属性不好用?
 
zsp:还有个问题
你的关于记录分页的方法是好用,但是如果面对一个很大的记录集,这样做我觉得并不会
节省内存、提高速度,因为你的方法的原理实际上还是先把记录集先select出来,然后再
在其中进行select。我想知道有没有直接在Server端对记录进行分页,就象MySQL中的Limit
子句一样。
 
1、有关它的速度问题,与你所要求返加的结果集有关,我曾经在有十多万条记录中做过,
速度很快,至于你说有没有直接在Server端对记录进行分页,我不太明白你的意思,我的方
法在SERVER端是可以进行分页的

2、有关SQL SEVER、ACCESS,在本论坛查长以前的贴子吧!

3、>>为什么Delphi中的ADODataSet控件中的Maxrecords,和CacheSize两个属性不好用?
不好用在哪
 
第一个问题我已经了解了。
Delphi中的Ado控件的Maxrecords属性是用来指定返回的最大数量的记录数。比如说我把它
设为10,可是它照样返回该记录集中的所有记录。
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
I
回复
0
查看
679
import
I
后退
顶部