在做數據庫系統開發時,特別是需要對數據庫操作進行性能測試及優化時,我們就需要在數據庫測試表中插入大量數據以便測試。對於這些數據的插入,這裡通過實例展示如何通過存儲過程進行實現。
數據庫表(userInfo)結構如下:

CREATE TABLE [dbo].[userInfo] (

[userID] [int] IDENTITY (1, 1) NOT NULL ,

[roleType] [int] NULL ,

[groupID] [int] NULL ,

[userCode] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,

[userName] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,

[text1] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,

[text2] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,

[text3] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL

) ON [PRIMARY]

GO
存儲過程如下(這裡是批量插入99000條數據,roleType,groupID兩個字段為隨機生成的0-5之間的數):

CREATE PROCEDURE add_UserInfo

AS

DECLARE @userCode VARCHAR(30)

DECLARE @userName VARCHAR(30)


DECLARE @userCode_base VARCHAR(30)

DECLARE @count INTEGER

DECLARE @index INTEGER

DECLARE @rand1 INTEGER

DECLARE @rand2 INTEGER

SET @userCode_base='qs_'

SET @userName='userName'

SET @count=100000

SET @index=10000


WHILE @index<@count

BEGIN

SET @userCode=@userCode_base+CONVERT(VARCHAR,@index)

SET @rand1=convert(int,rand()*5)

SET @rand2=convert(int,rand()*5)

INSERT INTO userInfo (userCode,roleType,groupID,userName,text1,text2,text3)

VALUES (@userCode,@rand1,@rand2,@userName,'aokei kaol jof','','aokei kaol jof')

SET @index=@index+1

END

GO