储存过程执行出错

来源:百度知道 编辑:UC知道 时间:2024/05/09 13:31:16
create proc lylszb
@gsmc varchar(50)
as
begin
declare @zhangbiao as varchar(20)
declare @djb as varchar(20)
select @zhangbiao=zhangbiao,@djb=djb from gongsibiao where gsmc=@gsmc and nian=year(getdate())
exec('select wplb,wpmc,ggxh,jldw,left(['+@djb+'].djh,1) as czlxid,rq,right(czlx,2) as czlx,lylb,ckmc,sname,shliang,bhsje,zjiner from ['+@zhangbiao+'],['+@djb+'],lyjbxx,lylbxx,wpjbxx where lyjbxx.lylxid=lylbxx.id and ['+@djb+'].gsmc=lyjbxx.gsmc and ['+@djb+'].djh=lyjbxx.djh and ['+@djb+'].djh=['+@zhangbiao+'].djh and ['+@zhangbiao+'].zfbz=0 and ['+@djb+'].zfbz=0 and lyjbxx.gsmc='+@gsmc+' and ['+@zhangbiao+'].wpbh=wpjbxx.wpbh and ['+@djb+'].gsmc='+@gsmc)
end
当我不加参数@gsmc时,可以执行出结果,当我加上后,我执行:exec lylszb '菏泽胜达有限公司',提示我:

QL Server 执行时间:
CPU 时间 = 0 毫秒,耗费时间 = 0 毫秒。
服务器: 消息 207,级别 16,状态 3,行 1
列名 '菏泽睿昌化

这个问题很典型,你select的一个列的名字错误(是表中不存在的列),而且还是一个变量'菏泽睿昌化工有限责任公司' ,但我不熟悉你的表,而且你做的也比较复杂,你可以参考http://zhidao.baidu.com/question/25042767.html
他和你的错误类似