当前位置: 代码迷 >> Sql Server >> case.when.then.话语在存储过程中嵌套联合查询报错
  详细解决方案

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

热度:47   发布时间:2016-04-27 11:01:59.0
case...when...then...语句在存储过程中嵌套联合查询报错
SQL code
create proc GetReportasbegininsert 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 DistrictNameend


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

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

a.Clayer 为varchar(1)

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

SQL code
消息 8152,级别 16,状态 14,过程 GetReport,第 4 行将截断字符串或二进制数据。语句已终止。


------解决方案--------------------
a.Clayer 为varchar(1) 长度明显不够啊

------解决方案--------------------
Clayer---varchar(1) is not enough to hold the data like "省代"
------解决方案--------------------
a.Clayer 为varchar(1)这个字段长度明显不够的
------解决方案--------------------
解决了就结贴拉》。。。。
------解决方案--------------------
这么多分 求人性化蹭点分。。。。
------解决方案--------------------
字段长度不够,所以报错,提示会被截断
  相关解决方案