最新消息:从今天开始,做一个有好习惯的人。

oracle循环插入测试数据

数据库 迷路的老鼠 1756浏览 0评论

今天公司一测试给了一段oracle代码,看的头大:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
DECLARE @TERM_NO INT

SET @TERM_NO = 1 /*设置变量*/

WHILE (@TERM_NO < 1000) /*设置循环次数*/

BEGIN

WAITFOR DELAY '000:00:10' /*延迟时间10秒*/

INSERT INTO cd_terminal

(TERM_NO, EQUIP_TYPE, EQUIP_USE, EQUIP_NO, EQUIP_NAME, ACCEPT_TP, BRANCH_NO, TERM_STATUS, TERM_SIGN_STATUS, LAST_LOGIN_DATE, BATCH_NO, EQUIP_INVESTOR, SETUP_DATE, SETUP_PERSON, MANAGE_PERSON, TERM_DESCRIBE, BIND_SAM_NUM, LAST_KEY_UPDATE, LAST_AUTH_DATE, USE_WAY, CUR_TERM_SEQ, MAX_TERM_SEQ, TRANSFER_FREQ, TRANSFER_SUM, CONSUM_SUM, CONSUM_FREQ, CHARGE_SUM, CHARGE_FREQ, REMARK, TEST_FLAG, CRT_SYS_OPR, CRT_SYS_DT, LST_MOD_SYS_OPR, LST_MOD_SYS_DT)

VALUES (@TERM_NO, '3', '3', '1', '1', '01', '650202', '1', '', NULL, '', '', NULL, '', '', '', 1, NULL, NULL, '', '', '', NULL, NULL, NULL, NULL, NULL, NULL, '', '', 'admin ', to_date('22-02-2013 14:11:15', 'dd-mm-yyyy hh24:mi:ss'), 'admin ', to_date('22-02-2013 14:11:15', 'dd-mm-yyyy hh24:mi:ss'))

SET @TERM_NO = @TERM_NO + 1

END

好好沟通一下,其实人家测试也是有需求的,作为技术人员<哈哈,今天不是美工啦>怎么也得协调解决一下。
需求是这样的,人家需要做一千条的测试数据,但是手工太慢了<程序猿的价值不就是这个么>就想自动化处理。
好吧,我们分析一下这段代码,首先@是怎么回事?显然人家的想法是定义一个变量,好吧,看看&的用法吧。


&符号:在Oracle中,&符号常用来指出一个变量。例如,&fox是一个变量,稍微有点不同的一种&& fox。每当&fox出现在Oracle脚本中时,都会要求您为它提供一个值。而使用&&fox,您只需要在& &fox第一次出现时为它提供变量值。如果想将&符号作为普通的符号使用,则应该关闭这个特性。要想关闭这个特性,可以运行以下的命令: set define off ,这是一个SQLplus命令,不是一个SQL命令。SQLplus设置了SQL在Oracle中运行的环境。


再说WHILE (@TERM_NO < 1000) /*设置循环次数*/,这个,我还真没见过while可以这样用。好吧,语法也错了。

再说这个编码格式的问题,亲,你要我怎么给你解释“;”的用法呢,好吧,不解释了。

就直接上自己的测试代码吧。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
DECLARE TERM_NO INT ;

BEGIN

TERM_NO:= 1 ; /*设置变量*/

WHILE TERM_NO < 1001 loop /*设置循环次数*/

DBMS_LOCK.SLEEP(10); /*延迟时间10秒*/

INSERT INTO ACCT_DICTCODE

(ID, NAME, DICTDESC, DICTVALUE)

VALUES (TERM_NO, '3', '3', '1');

TERM_NO := TERM_NO + 1 ;

END loop;

END;

没什么技术性,自己mark一下吧。

oracle

oracle

 

转载请注明:迷路的老鼠 » oracle循环插入测试数据

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址