- 基于Oracle 10G(03年的版本,现在18C)
- PL/SQL 8.0.4(都是很老的版本,现在都13了)
- 基于Mysql(5.5.32)
- 基于ORACLE SCOTT用户的DEPT表做测试
1. Oracle部分
1.1 先创建一张测试表
create table dept_1 as
select * from dept where 1=2
还要修改下dept_1中deptno的属性,默认只有2位,改为10位。
alter table dept_1 modify deptno number(10)
1.2 啥也不说直接帖代码
begin
for i in 1..1000000 loop
insert into dept_1(deptno,dname,loc) values(i,'NBA'||i,'HOU'||i);
end loop;
commit;
end;
实测18秒左右,快吗?很慢,但也没啥关系。

上面是SQL 编程最简单的一个应用吧,无非就是不熟悉语法,简单到发指的成都哎。
2. Mysql部分
2.1 说在前面
- 仍然要创建一个测试表
- 注意各字段的值域范围
2.2 代码
DROP PROCEDURE IF EXISTS test_insert;
DELIMITER //
CREATE PROCEDURE test_insert()
BEGIN
DECLARE n INT DEFAULT 1;
WHILE n < 1000000 DO
INSERT INTO dept_1 VALUES(n,CONCAT('NBA',n),CONCAT('HOUSTON',n));
SET n = n + 1;
END WHILE;
COMMIT;
END
//
CALL test_insert();
2.3 语法简单说明
- 此处创建了一个存储过程,oracle也可以
- Mysql和Oracle的语法还是不太一样的
- 比如concat和||在ORACLE中通用,但mysql不能用||
说在最后
- 有其他方法吗?有,很多,如果是构造数据,那这个可以试一下,非常适合新手。如果是已有数据,去看看导入吧,有很多的导入工具,比如ORACLE PLSQL DEV中的Tools下面的几个IMP工具。再高级的我也不会了,工作中没用到过,没办法,学以致用吗,学而无用不如不学,费脑子。
- PLSQL的语法就是一门语言,要学的话也要系统的学习方可,我就会点皮毛。
网友评论