SQL> create table testa as select rownum a,dbms_random.string('a',5) b from dual connect by rownum<6;表被创建SQL> select * from testa; A B
---------- --------------------------------------------------------------------------------
1 CBPdK
2 xYtxD
3 hwVYK
4 DoJjK
5 ySDdK
---------- --------------------------------------------------------------------------------
1 CBPdK
2 xYtxD
3 hwVYK
4 DoJjK
5 ySDdK
select rownum a,dbms_random.string('a',5),to_char(rownum,'00000000') b from dual connect by rownum<100000;
请 cenlmmx(学海无涯苦作舟) 解释一下,谢谢
---------- ----------
1 hHcYY
2 ELyuk
3 rXNHc
4 NVlEU
5 OcmIaSQL> select rownum a,dbms_random.string('a',5) b from dual connect by rownum<6; A B
---------- ----------
1 WbsBNSQL> SELECT * FROM (select rownum a,dbms_random.string('a',5) b from dual connect by rownum<6); A B
---------- ----------
1 feRdN
2 YlUGZ
3 HgPQq
4 biZnm
5 EDsYG注意到没有,受 DUAL 这个特殊表的影响,直接select就只有一行。
但是如果把带有 CONNECT BY 的语句作为一个子查询,就可以得到期望的行数。在 CREATE TABLE AS 语句中后面的select实际上是一个子查询。
----------
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 ROWNUM
----------
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 ROWNUM
----------
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62 ROWNUM
----------
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83 ROWNUM
----------
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101101 行 已选择SQL> select rownum a,dbms_random.string('a',5) b from dual connect by rownum<6; A B
---------- --------------------------------------------------------------------------------
1 MSlpC
2 spirA
3 npVmG
4 DFGEp
5 lRKrA