请问这个SQL存储过程错在哪里,报错“将截断字符串或二进制数据。”

CREATEPROCEDUREgetscore1@stuIDchar(10),@paperIDchar(10)ASinsertintoTestScoreselecta.s... CREATE PROCEDURE getscore1
@stuID char(10) ,
@paperID char(10)
AS

insert into TestScore
select a.stuID,a.stuName,a.paperID,a.IP,a.beginTime,a.subTime,
( (case when a.q1=b.q1 then 1 else 0 end)+
(case when a.q2=b.q2 then 1 else 0 end)+
(case when a.q3=b.q3 then 1 else 0 end)+
(case when a.q4=b.q4 then 1 else 0 end)+
(case when (a.qv1a=b.qv1a)and(a.qv1b=b.qv1b)and(a.qv1c=b.qv1c)and(a.qv1d=b.qv1d) then 1 else 0 end)+
(case when (a.qv2a=b.qv2a)and(a.qv2b=b.qv2b)and(a.qv2c=b.qv2c)and(a.qv2d=b.qv2d) then 1 else 0 end))*100/6,
a.q1,a.q2,a.q3,a.q4,a.qv1a+a.qv1b+a.qv1c+a.qv1d as 'qv1',a.qv2a+a.qv2b+a.qv2c+a.qv2d as 'qv2'
from TestStuAsw a inner join TestPapAsw b on a.paperID=b.paperID
where a.stuID=@stuID and a.paperID=@paperID
delete TestSutAsw
GO
展开
 我来答
vinson_shen
2010-06-13 · TA获得超过2503个赞
知道小有建树答主
回答量:960
采纳率:100%
帮助的人:0
展开全部
出现"
将截断字符串或二进制数据
"

这个错误,表示将要赋予给变量和字段的值超出了变量和字段“定义长度”。

你这里应该是往表insert into TestScore插入记录时,有些字段的值的长度超出了列的定义长度。

你仔细看看吧:

select * from syscolumns where id=object_id('TestScore')

看那些列的长度与将要插入的值长度不兼容。
mwtcz
2010-06-13 · TA获得超过1322个赞
知道小有建树答主
回答量:1367
采纳率:50%
帮助的人:1034万
展开全部
@stuID char(10) ,
@paperID char(10) 这2个字段可能不够长,搞的长点,比如100
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
heizhenpeng
2010-06-13 · TA获得超过899个赞
知道小有建树答主
回答量:955
采纳率:0%
帮助的人:1076万
展开全部
请检查你的文本型字段的大小是否小于你要插入的值的大小?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式