MS SQL 插入数据问题?
当表为空时可以向其中插入9999条随即产生的数据,但当表不为空时,插入9999数据时只能插入1598条数据(每次都是1598),但是当再次执行插入数据时(无论插入多少),上次少插入的8401条数据会再表中显示出来,这是为什么?
- - - - - - - - - - - - - - - - -
ALTER proc [dbo].[usp_addCard]
@cardName varchar(50),
@cardpValue int,
@cardPrice float,
@num int
as
begin
declare @cardId varchar(50),@cardpwd varchar(50),@i int
set @i = 0
if exists(select name from (select name = @cardName)a where name like '%魔兽%')
begin
while @i < @num
begin
select @cardId = 'MS'+convert(varchar(50),convert(varchar(50),cast(RAND()*100000 as int))+convert(varchar(50),cast(RAND()*1000000 as int))+convert(varchar(50),cast(RAND()*1000000 as int)))
select @cardpwd = convert(varchar(50),convert(varchar(50),cast(RAND()*100000 as int))+convert(varchar(50),cast(RAND()*1000000 as int)))
insert into tb_card values(@cardId,@cardName,@cardpwd,@cardPrice,@cardpValue,'images/card/2.jpg')
set @i = @i+1
end
end
else if exists(select name from (select name = @cardName)a where name like '%网易%')
begin
while @i < @num
begin
select @cardId = 'WY'+convert(varchar(50),convert(varchar(50),cast(RAND()*100000 as int))+convert(varchar(50),cast(RAND()*1000000 as int))+convert(varchar(50),cast(RAND()*1000000 as int)))
select @cardpwd = convert(varchar(50),convert(varchar(50),cast(RAND()*100000 as int))+convert(varchar(50),cast(RAND()*1000000 as int)))
insert into tb_card values(@cardId,@cardName,@cardpwd,@cardPrice,@cardpValue,'images/card/1.jpg')
set @i = @i+1
end
end
end
这是我的SQL语句,
执行 insert ..9999条.. 结果为 9999行影响,
删除完;
执行 insert ..1条.. 结果为 1行影响,
执行 insert ..9999条.. 结果为 1599行,
执行 insert ..1条.. 结果为 10001
谁能帮忙解释下?????