| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1016 人关注过本帖
标题:关于存储过程添加出错?
只看楼主 加入收藏
LouisXIV
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:789
专家分:0
注 册:2006-1-5
收藏
得分:0 
一样

2006-04-19 09:28
LouisXIV
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:789
专家分:0
注 册:2006-1-5
收藏
得分:0 
出现的2条记录分别是什么样的?

2006-04-19 09:30
missking
Rank: 1
等 级:新手上路
帖 子:93
专家分:0
注 册:2006-4-8
收藏
得分:0 
比如说@ISDN为MS-0000004
@BookID的两条为MS-0000004-000
MS-0000004-001
其它无论我添加什么样的@ISDN@BookID都只出现末尾为....-000和.....-001

2006-04-19 09:49
LouisXIV
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:789
专家分:0
注 册:2006-1-5
收藏
得分:0 
我的感觉是字符长度定义和取舍有问题。

不是自己做的东西很难查。

2006-04-19 09:56
missking
Rank: 1
等 级:新手上路
帖 子:93
专家分:0
注 册:2006-4-8
收藏
得分:0 

原先我把@tempBookID长度设置为2,而本来应该是3,所以只有一条记录.......-00,后来我把长度改成3后变成......-000和.....-001两条记录了.
还有其它存储过程跟这个类似,它就能正确添加记录.
create proc Insert_BookStateInfo
@ISDN varchar(10),
@TotalStock integer
as
begin tran
declare @State varchar(10),@BookID varchar(14),@i integer,@tempBookID varchar(3)
set @i=0
set @State='归还'
while (@TotalStock>@i)
begin
set @tempBookID=(convert(varchar(3),(select max(convert(int,right(BookID,len(BookID)-10)))+1
from BookStateInfo
where ISDN=@ISDN )) )
while (len(@tempBookID)<3)
set @tempBookID='0'+@tempBookID
set @BookID=@ISDN+'-'+@tempBookID
insert into BookStateInfo(ISDN,BookID,State)
values(@ISDN,@BookID,@State)
set @i=@i+1
end
update BookInfo
set TotalStock=isnull(TotalStock,0)+@TotalStock
from BookInfo as a ,BookStateInfo as b
where a.ISDN=b.ISDN and b.ISDN=@ISDN
update BookInfo
set BookStock=isnull(BookStock,0)+@TotalStock
from BookInfo as a ,BookStateInfo as b
where a.ISDN=b.ISDN and b.ISDN=@ISDN
commit


GO


2006-04-19 10:19
快速回复:关于存储过程添加出错?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018170 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved