语法:
创建:
create procedure 存储过程名(参数)
存储过程开始和结束语:
begin .....end
变量赋值:
set x=1
定义变量:
declare y int defaut 0
创建存储过程函数:
create function 函数名(参数)
调用存储过程:
call 存储过程名(参数)
\
首先需要定义表的结构,然后编写一个存储过程来执行插入操作。
下面是一个基于SQL Server的示例,展示了如何完成这个任务。请注意,不同数据库系统(如MySQL, PostgreSQL, Oracle等)的语法可能有所不同,但基本思路是相似的。
步骤 1: 定义表结构
首先,我们需要在数据库中定义一个包含10个字段的表。
这里假设这些字段包括ID(主键,自增
)、Name(字符串)、Age(整型)、Email(字符串)等7个字段,为简单起见,我们仅列出四个字段,但你可以根据需要扩展到10个。
CREATE TABLE MyTable (
ID INT IDENTITY(1,1) PRIMARY KEY,
Name VARCHAR(100),
Age INT,
Email VARCHAR(100) -- 添加其他7个字段...
);
步骤 2: 编写存储过程
接下来,我们编写一个存储过程来插入数据。由于直接插入5000条数据在单个INSERT语句中可能不太实际(特别是如果每个值都需要单独指定),我们可以考虑使用循环或表值参数(对于大量数据,表值参数可能更有效,但这里为了简单起见,我们使用循环)。
注意:对于大量数据的插入,直接使用循环可能不是最高效的方法,特别是当数据量非常大时。但这里为了演示如何使用存储过程,我们采用这种方法。
CREATE PROCEDURE Insert5000Records
AS
BEGIN
DECLARE @i INT = 0;
WHILE @i < 5000
BEGIN
INSERT INTO MyTable (Name, Age, Email)
VALUES ('Name' + CAST(@i AS VARCHAR), 20 + (@i % 50), 'email' + CAST(@i AS VARCHAR) + '@example.com');
SET @i = @i + 1;
END
END
GO
步骤 3: 执行存储过程
现在,我们可以执行这个存储过程来插入5000条数据。
EXEC Insert5000Records;
插入批量1000条数据:
DROP PROCEDURE IF EXISTS pro_users;
DELIMITER
CREATE PROCEDURE pro_users(IN inr int)
BEGIN
DECLARE i INT DEFAULT 0;
START TRANSACTION;
WHILE i<inr DO
INSERT INTO USERS(id, NAME,EMAIL,AGE,SEX,ID_CARD,MOBILE_PHONE) values(i,'曹植','liuhuyuan@163.com',29,'男','131081197803061637',13663776677);
commit;
SET i=i+1;
END WHILE;
COMMIT;
END;
call pro_users(1000)
使用concat()拼接得到每组数据不同
DROP PROCEDURE IF EXISTS generate_user_data;
CREATE PROCEDURE generate_user_data()
BEGIN
DECLARE COUNT_NUM INT DEFAULT 0;
WHILE COUNT_NUM <100 DO
INSERT INTO user_info values (null,concat('name',COUNT_NUM),md5('password'),'address');
SET COUNT_NUM = COUNT_NUM+1;
END WHILE;
END;