create proc sp_stockPlanAll @proID int
asdeclare @proName varchar(50)
declare @allMoney numeric(18,2)begin  --pur_stockPlanDetail和pub_proProduct是有主外键关系的2个表select @allMoney=sum(pur_stockPlanDetail.proCountMoney) from pub_proProduct inner join pur_stockPlanDetail on pub_proProduct.ID=pur_stockPlanDetail.F_proID where pub_proProduct.ID=@proID;
select @proName=productName from pub_proProduct where ID=@proID;select *from @allMoney,@proName
end
go
exec sp_stockPlanAll @proID=2怎么总是提示@allMoney未声明啊,我明明声明了呀
服务器: 消息 137,级别 15,状态 2,过程 sp_stockPlanAll,行 13
必须声明变量 '@allMoney'。

解决方案 »

  1.   

    create proc sp_stockPlanAll @proID int 
    as declare @proName varchar(50) 
    declare @allMoney numeric(18,2) begin  --pur_stockPlanDetail和pub_proProduct是有主外键关系的2个表 select @allMoney=ISNULL(sum(pur_stockPlanDetail.proCountMoney),-1) 
    from pub_proProduct 
    inner join pur_stockPlanDetail 
    on pub_proProduct.ID=pur_stockPlanDetail.F_proID 
    where pub_proProduct.ID=@proID; select @proName=productName from pub_proProduct where ID=@proID; select * from @allMoney,@proName 
    end 
    go 
    exec sp_stockPlanAll @proID=2 
      

  2.   

    select * from @allMoney,@proName 
    -----------------------------------
    你这句是什么呀?
    你是不是要
    select @allMoney,@proName 
      

  3.   

    exec sp_stockPlanAll @proID=2 大哥,调用错了!你只传了一个参数~还传错了
    这样调用,把两个参数以值的方式传递进去
    exec sp_stockPlanAll @proName的值,@allMoney的值
      

  4.   


    这样是没错的,因为@proName,@allMoney的值是要通过查询得到的~~
    用3楼大哥的方法就OK了,小弟比较菜,不好意思啊~
    辛苦2位了!