下面关于一个ROWNUMSQL语句,数据6万条左右时,发现数据取不到的现象.
2000条的时候,不会有这样的问题.
请各位大侠能谈谈什么可能性会造成这样的问题啊?SELECT
NO,
CONTRACT_ST_DATE
FROM (
SELECT
ROWNUM NO,
CONTRACT_ST_DATE
FROM MG_CONT) MG
WHERE MG.NO>:NUM*10000 AND MG.NO<=(:NUM+1)*10000;6万条数据的时候, :NUM分6次传值,分别是0、1、2、3、4、5。
2000条的时候,不会有这样的问题.
请各位大侠能谈谈什么可能性会造成这样的问题啊?SELECT
NO,
CONTRACT_ST_DATE
FROM (
SELECT
ROWNUM NO,
CONTRACT_ST_DATE
FROM MG_CONT) MG
WHERE MG.NO>:NUM*10000 AND MG.NO<=(:NUM+1)*10000;6万条数据的时候, :NUM分6次传值,分别是0、1、2、3、4、5。
NO,
CONTRACT_ST_DATE
FROM (
SELECT
ROWNUM NO,
CONTRACT_ST_DATE
FROM MG_CONT) MG
WHERE MG.NO>0 AND MG.NO <=10000; SELECT
NO,
CONTRACT_ST_DATE
FROM (
SELECT
ROWNUM NO,
CONTRACT_ST_DATE
FROM MG_CONT) MG
WHERE MG.NO>10000 AND MG.NO <=20000;...
select *
from (
SELECT
ROWNUM NO,
CONTRACT_ST_DATE
FROM MG_CONT
WHERE rownum <=(:NUM+1)*10000
) mg
where MG.NO>:NUM*10000
的确在循环中,:NUM改变值的同时,MG_CONT表是有不规律的DELETE操作,所以我想这会造成ROWNUM的错位.
谢谢你的提醒!
等到改好了,到客户那边测试OK了,再给你加分!まことにありがとうございます!