MS SQL 插入数据问题?

wentshop 2011-03-16 02:27:36
当表为空时可以向其中插入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
谁能帮忙解释下?????



...全文
160 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
wentshop 2011-03-19
  • 打赏
  • 举报
回复
没人喜欢找bug 吗 ? 都没遇到过这种情况??????
wentshop 2011-03-18
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 fredrickhu 的回复:]
引用 9 楼 wentshop 的回复:
我在机房的电脑上试的,每次只能添加860条记录,再次添加时才会连带上次少添加的添加上去,,感觉可能是SQL Server里面的设置问题,但是直接在SQL Server 里面执行每次都是全部添加成功,如果问题处理不了,到演示项目时,只能限定添加的条数 少于860 了

字段长度和表空间有限制?
[/Quote]

不应该是限制,因为在数据库界面直接添加 1W 条 2秒执行完,没有任何异常
wentshop 2011-03-18
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 fredrickhu 的回复:]
引用 8 楼 wentshop 的回复:
引用 7 楼 andy_liucj 的回复:
引用 6 楼 wentshop 的回复:
引用 4 楼 andy_liucj 的回复:
给的信息太少了,表结构你也没给,

SQL code
select name from (select name = @cardName)a where name like '%魔兽%'

这是干什么用的
……
[/Quote]

难道我写的不是先存到表里?
--小F-- 2011-03-18
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 wentshop 的回复:]
我在机房的电脑上试的,每次只能添加860条记录,再次添加时才会连带上次少添加的添加上去,,感觉可能是SQL Server里面的设置问题,但是直接在SQL Server 里面执行每次都是全部添加成功,如果问题处理不了,到演示项目时,只能限定添加的条数 少于860 了
[/Quote]
字段长度和表空间有限制?
--小F-- 2011-03-18
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 wentshop 的回复:]
引用 7 楼 andy_liucj 的回复:
引用 6 楼 wentshop 的回复:
引用 4 楼 andy_liucj 的回复:
给的信息太少了,表结构你也没给,

SQL code
select name from (select name = @cardName)a where name like '%魔兽%'

这是干什么用的


@cardName是传进来的字符串……
[/Quote]

先把传进来的字符串存入一张表中 然后再做处理就简单了
wentshop 2011-03-18
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 jinfengyiye 的回复:]
引用 4 楼 andy_liucj 的回复:
给的信息太少了,表结构你也没给,

SQL code
select name from (select name = @cardName)a where name like '%魔兽%'

这是干什么用的

难道就是传说中的注入广告。网易魔兽。
[/Quote]

不是啊,是我们的作业,做个点卡在线销售系统
gw6328 2011-03-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 andy_liucj 的回复:]
给的信息太少了,表结构你也没给,

SQL code
select name from (select name = @cardName)a where name like '%魔兽%'

这是干什么用的
[/Quote]
难道就是传说中的注入广告。网易魔兽。
wentshop 2011-03-18
  • 打赏
  • 举报
回复
insert into tb_card values(@cardId,@cardName,@cardpwd,@cardPrice,@cardpValue,'images/card/2.jpg')

表结构不是主要的吧,从这句话中应该能知道表结构了
wentshop 2011-03-18
  • 打赏
  • 举报
回复
我在机房的电脑上试的,每次只能添加860条记录,再次添加时才会连带上次少添加的添加上去,,感觉可能是SQL Server里面的设置问题,但是直接在SQL Server 里面执行每次都是全部添加成功,如果问题处理不了,到演示项目时,只能限定添加的条数 少于860 了
wentshop 2011-03-18
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 andy_liucj 的回复:]
引用 6 楼 wentshop 的回复:
引用 4 楼 andy_liucj 的回复:
给的信息太少了,表结构你也没给,

SQL code
select name from (select name = @cardName)a where name like '%魔兽%'

这是干什么用的


@cardName是传进来的字符串,把他当做一个表的一行一列进行查询其中是否包含关……
[/Quote]
那查找字符串中是否包含某些关键字该怎么写呢?
andy_liucj 2011-03-16
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wentshop 的回复:]
引用 4 楼 andy_liucj 的回复:
给的信息太少了,表结构你也没给,

SQL code
select name from (select name = @cardName)a where name like '%魔兽%'

这是干什么用的


@cardName是传进来的字符串,把他当做一个表的一行一列进行查询其中是否包含关键字‘魔兽’,
(select name ……
[/Quote]你就是想查找@cardname里是否含有“魔兽”2字,也不需要搞这么高升吧,呵呵
wentshop 2011-03-16
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 andy_liucj 的回复:]
给的信息太少了,表结构你也没给,

SQL code
select name from (select name = @cardName)a where name like '%魔兽%'

这是干什么用的
[/Quote]

@cardName是传进来的字符串,把他当做一个表的一行一列进行查询其中是否包含关键字‘魔兽’,
(select name = @cardName)a 这是一个虚表,查询里面的关键字,我想要的就是在接收的字符串里查找关键字,我是这么想的 ,也没去网上找更好的方法
andy_liucj 2011-03-16
  • 打赏
  • 举报
回复
画蛇添足了吧
andy_liucj 2011-03-16
  • 打赏
  • 举报
回复
给的信息太少了,表结构你也没给,
select name from (select name = @cardName)a where name like '%魔兽%'

这是干什么用的
wentshop 2011-03-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 haiwer 的回复:]
检查方法有问题吧
[/Quote]
能具体说下吗?
昵称被占用了 2011-03-16
  • 打赏
  • 举报
回复
检查方法有问题吧

22,300

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧