LEJA.SANO
犹豫、纠结、沮丧…… 皆因智慧不足。 积累,才有智慧。
posts - 5,comments - 0,trackbacks - 0
        表T_CAR 

属性名称

属性代码

属性类型

属性长度

备注

CAR_ID

CAR_ID

VARCHAR2

38

主键。guid+"-"+5位流水号

CAR_DIS

CAR_DIS

Integer

顺序号。

 厂家

CJ

VARCHAR2

20

东风、大众、一汽

涡轮等级

WLDJ

Varchar2

 

1.2L2.0L、2.8L

台数

TS

INTEGER

 

整数,100以内

日期

Rq

Date














向这个表中增加2000条随机数据。字段属性依照备注的规则生成,日期随机产生。
一开始我想使用一条SQL来完成以上要求,并且建立了两个临时表

temp_wldj:

IDD

WLDJ

1

1.2L

2

2.0L

3

2.8L

temp_cj:

IDD

DS

1

东风

2

大众

3

一汽


编写时发现厂家和涡轮等级没法随机取值。
随机取到一条记录:
select *
  
from (select ds from temp_cj order by dbms_random.value)
 
where rownum = 1
插入2000条,其中表table_2000是随便一个有2000条记录的一个表,超过2000可以加 where rownum<2001
SQL插入

这样插入时厂家和涡轮等级取值不是随机。

于是我考虑使用了存储过程:
批量插入
测试:oracle10g    服务器:HP-DL380    工具:PL/SQL     用时: 16.182S

其实问题的难点在于随机从固定的范围内取值(厂家、电压等级)。
于是写一个方法完成此难点的需求:
传入取值范围,返回随机一个值。

随机取值方法
如此一来,使用一条SQL就可以完成我们的任务。
SQL插入(调用方法)
测试:oracle10g    服务器:HP-DL380    工具:PL/SQL     用时: 0.844S

应该还可以不需要建立两个临时表,直接把取值范围出入一个function返回随机一个值。

另外,在测试中发现如下两个 SQL:
疑问

结果集的数目是随机的,就是有时返回空,有时返回1条或者多条。

function和这个问题有待进一步解决,先写到这里。
PS:如果列位有更好的完成者一任务的方法与思路,请求分享。不正之处望不吝指教!

posted on 2010-03-23 13:42 leja 阅读(1703) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: