请教各位大虾个问题呀,关于Oracle循环的设置问题:
现有表E有字段A,字段B,字段C,现在想写一个存储过程,使得字段A循环插入100条数据不重复,字段B始终在1~~~5之间循环,字段C始终aaaa~~~~~~zzzz之间循环。
自己这个设置了很长时间都不成功,老是会产生笛卡尔积的问题。
请问这个循环应该怎样设置呀??create table E
(
A INTEGER,
B VARCHAR2(50),
C NUMBER
)
现有表E有字段A,字段B,字段C,现在想写一个存储过程,使得字段A循环插入100条数据不重复,字段B始终在1~~~5之间循环,字段C始终aaaa~~~~~~zzzz之间循环。
自己这个设置了很长时间都不成功,老是会产生笛卡尔积的问题。
请问这个循环应该怎样设置呀??create table E
(
A INTEGER,
B VARCHAR2(50),
C NUMBER
)
解决方案 »
- rman恢复问题
- 如何实现两个结构相同表的联合查询
- 请教一个查询
- oracle的udump目录下生成很大体积的文件,怎么回事?
- 为什么变量跟踪器里sqlcode 为0,仍会执行到raise ex_dan,但是又不执行when ex_dan then里的操作
- 时间按天的group by问题
- 求教select语句!
- 在建表时,希望其中"序号"子段能够自己添加上,并且能够自动变化。
- 100分求写批处理运行sql文的超难问题答案!
- 有关oracle mangerment server的几个问题。
- 配置oracle10 和sqlserver2000之间的透明网关 ora-28545:连接代理时 Net8诊断到错误
- 关于视图的更新触发某事件,谢谢大家!!!
from dual connect by rownum <=100;
这样子行不行,不用循环写了
可能字段C出现的形式是abcd~~~~~zxyz的形式??
数字可以实现这样的功能。
但是字段C的字母形式,能不能是想abcd~~~zxyz的形式呀??
Select Level a,
Mod(Level, 5) + 1 b,
To_Char(Chr(97 + Trunc((Level - 1) / 26 / 26 / 26)) ||
Chr(97 + Trunc((Level - 1) / 26 / 26)) ||
Chr(97 + Trunc((Level - 1) / 26)) ||
Chr(96 + Decode(Mod(Level, 26), 0, 26, Mod(Level, 26)))) c
From Dual
Connect By Level < 101
这个试试!!!
Select Level a,
Mod(Level, 5) + 1 b,
To_Char(
Chr(97 + Decode(Mod(Trunc((Level - 1) /26/26/26), 26), 0, 0, Mod(Trunc((Level - 1) / 26/26/26), 26))) ||
Chr(97 + Decode(Mod(Trunc((Level - 1) /26/26), 26), 0, 0, Mod(Trunc((Level - 1) / 26/26), 26))) ||
Chr(97 + Decode(Mod(Trunc((Level - 1) / 26), 26), 0, 0, Mod(Trunc((Level - 1) / 26), 26))) ||
Chr(96 + Decode(Mod(Level, 26), 0, 26, Mod(Level, 26)))
) c
From Dual
Connect By Level <= 5000
这个好用了
(
A INTEGER,
B VARCHAR2(50),
C NUMBER
)
使得循环插入100条数据.字段A不重复,字段B始终在1~~~5之间循环,字段C始终aaaa~~~~~~zzzz之间循环。
Select Level a,
Mod(Level, 5) + 1 b,
To_Char(
Chr(97 + Decode(Mod(Trunc((Level - 1) /26/26/26), 26), 0, 0, Mod(Trunc((Level - 1) / 26/26/26), 26))) ||
Chr(97 + Decode(Mod(Trunc((Level - 1) /26/26), 26), 0, 0, Mod(Trunc((Level - 1) / 26/26), 26))) ||
Chr(97 + Decode(Mod(Trunc((Level - 1) / 26), 26), 0, 0, Mod(Trunc((Level - 1) / 26), 26))) ||
Chr(96 + Decode(Mod(Level, 26), 0, 26, Mod(Level, 26)))
) c
From Dual
Connect By Level <= 5000