case...when...then...语句在存储过程中嵌套联合查询报错

nonoqiqi 2012-09-19 10:47:12
create proc GetReport
as
begin
insert into dbo.OneceShop(cid,Clayer,DistrictCode,DistrictName,createdate)
select a.cid,case a.Clayer when '1' then '总代'
when '2' then '省代'
when '3' then '办事处'
when '4' then '区代'
when '5' then '一次店'
when '6' then '二次店'
end,b.DistrictCode,b.DistrictName,getdate()
from dbo.TPUBCLIENTINFO a,TPubDistrict b where a.caddprovince=b.struccode order by DistrictName
end


简单的存储过程,就查两表数据,插入新表,其中有一个表的字段a.Clayer 我查出来如果是 1或者2或者3或者4。。。我想让他插入新表的时候直接转换判断。

1 就是 总代
2 就是 省代
3 就是 办事处
。。。

a.Clayer 为varchar(1)

存储过程创建可以,但执行报错

消息 8152,级别 16,状态 14,过程 GetReport,第 4 行
将截断字符串或二进制数据。
语句已终止。
...全文
162 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
iacpdj 2012-09-20
  • 打赏
  • 举报
回复
Clayer---varchar(1) is not enough to hold the data like "省代"
kevinjay567 2012-09-20
  • 打赏
  • 举报
回复
字段长度不够,所以报错,提示会被截断
老白猫 2012-09-20
  • 打赏
  • 举报
回复
这么多分 求人性化蹭点分。。。。
發糞塗牆 2012-09-20
  • 打赏
  • 举报
回复
解决了就结贴拉》。。。。
以学习为目的 2012-09-20
  • 打赏
  • 举报
回复
a.Clayer 为varchar(1)这个字段长度明显不够的
汤姆克鲁斯 2012-09-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

各位观众,不好意思,我粗心了,问题解决了!!!
[/Quote]
呵呵。
汤姆克鲁斯 2012-09-19
  • 打赏
  • 举报
回复
有些错误在创建存储过程的时候并不报错,叫做延迟解析

http://msdn.microsoft.com/zh-cn/library/ms190686(v=sql.105).aspx
nonoqiqi 2012-09-19
  • 打赏
  • 举报
回复
各位观众,不好意思,我粗心了,问题解决了!!!
汤姆克鲁斯 2012-09-19
  • 打赏
  • 举报
回复
a.Clayer 为varchar(1) 长度明显不够啊

22,209

社区成员

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

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