请教各位大虾个问题呀,关于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
)
解决方案 »
- oracle 存储过程,写一个简单的存储过程
- oracle中 用拼sql语句实现插入数据后返回当前自增长ID号,出现怪问题,求高手解决
- 触发器问题!
- 一个关于游标的取值问题
- 为什么用exp备份是用户名必须是 username as sysdba?imp导入时提示很多错误
- 请教:行列转换的“逆向转换”
- 怎么写一个存储过程,里面只有一个表和简单的sql语句
- dbms_sql执行游标和直接写个游标执行有什么不同,详细见下。
- 关于apache的问题,高手请进
- oracle 如何用sql实现split功能?
- 配置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