各位帮忙看下这个sql语句的问题

hairelove 2010-09-22 10:57:02
sql语句如下:

--开始事务
begin transaction
declare @errorsum int ,@usersid int,@sectionid int,@topiccounts int
select @sectionid=sid from bbssection where sname='.NET技术'
set @errorsum =@errorsum+@@error
select @usersid=uid from bbsusers where uname='sky'
print @usersid
set @errorsum =@errorsum+@@error

insert into bbstopic (tsid,tuid,ttopic,tcontents)
values (@sectionid,@usersid,'小弟请问.NET配置问题','.NET配置具体需要那些环境啊,我的页面怎么跑不起来呢?')
set @errorsum =@errorsum+@@error
update bbssection set stopiccount=stopiccount+1 where sid= @sectionid
set @errorsum =@errorsum+@@error
select * from bbssection where sname='.NET技术'
set @errorsum =@errorsum+@@error
set @topiccounts=@@rowcount
if @topiccounts=1
begin
update bbsusers set upoint=upoint+100 where uid=@usersid
end
else
begin
update bbsusers set upoint=upoint+50 where uid=@usersid
end
update bbsusers
set uclass=case
when upoint <500 then 1
when upoint between 500 and 1000 then 2
when upoint between 1001 and 2000 then 3
when upoint between 2001 and 4000 then 4
when upoint between 4001 and 5000 then 5
else 6
end
set @errorsum =@errorsum+@@error
print 'sky发布的帖子新是:'
select 板块=tsid,主题=ttopic,帖子内容=tcontents,发帖时间=ttime from bbstopic where tuid=@usersid
set @errorsum =@errorsum+@@error

if @errorsum <>0
begin
print '更新失败,回滚事务'
rollback transaction
end
else
begin
print'更新成功,提交事务,写入硬盘永久保存'
commit transaction
end
go


运行的结果如下:
5
消息 8152,级别 16,状态 14,第 9 行
将截断字符串或二进制数据。

语句已终止。
SID Sname SmasterID Sprofile SclickCount StopicCount
----------- -------------------------------- ----------- -------------------------------------------------- ----------- -----------
2 .NET技术 5 讨论web/xml、net remoting、duwaming 800 7

sky发布的帖子新是:
板块 主题 帖子内容 发帖时间
----------- -------------------- -------------------------------------------------- -----------------------

更新成功,提交事务,写入硬盘永久保存

问题是:
1,消息 8152,级别 16,状态 14,第 9 行
将截断字符串或二进制数据。是怎么回事?
2、这是事务处理过程,如果插入数据库失败,应该执行回滚操作,但是却执行的是提交事务的结果,那里错了?小弟求高手予以解答,谢谢
...全文
84 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
hairelove 2010-09-22
还有第二问题是怎么回事?
回复
hairelove 2010-09-22
将ttopic或者tcontents字段长度改为20和100,问题解决,谢谢各位的帮助
回复
ai_li7758521 2010-09-22
insert into bbstopic (tsid,tuid,ttopic,tcontents)
values (@sectionid,@usersid,'小弟请问.NET配置问题','.NET配置具体需要那些环境啊,我的页面怎么跑不起来呢?')
问题应该在这里,表bbstopic中ttopic或者tcontents字段长度不够大。
回复
hao1hao2hao3 2010-09-22
ttopic为varchar(20)
tcontents为varchar(50)


这两个最好改成nvarchar(20),nvarchar(50)

因为你输入的是汉字,还有就是把20和50改大点看看有没有问题。
回复
hairelove 2010-09-22
tsid,tuid 均为int类型的,
ttopic为varchar(20)
tcontents为varchar(50)
应该不会有字段长度不够的问题呀
回复
hao1hao2hao3 2010-09-22
应该是表bbstopic (tsid,tuid,ttopic,tcontents)
里面的某个字段的长度不够,修改该字段的长度为更大的值后再试试。
回复
dawugui 2010-09-22
1,消息 8152,级别 16,状态 14,第 9 行
将截断字符串或二进制数据。是怎么回事?

定义的字符串其长度不够。
回复
Rotel-刘志东 2010-09-22
是定义字符串的长度不够导致。
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2010-09-22 10:57
社区公告
暂无公告