CREATE procedure sp_YG_StUnitMedPlan
@unitID char(36),
@plansum float output
as
--定义游标
declare cur cursor for select sum(RetirePlanSum+OntheJobPlanSum) from HRW_YG_UnitMedicalPlan join ORG_Unit ON HRW_YG_UnitMedicalPlan.UnitID=ORG_Unit.ID 
where ID=''+@unitID+''
--定义一个变量来接收游标的值
--打开游标
open cur
set @plansum=0.0--给@plansum初值
--提取游标的值
fetch next from cur into @plansum
if @@fetch_status<>0
  print '错误'
print @plansum
--关闭游标
close cur
--销毁游标
deallocate cur
GO我在查询分析器中这样调用:
declare @f float
exec sp_YG_StUnitMedPlan '7AE0A3FB-2D6C-4E51-8B10-71EAFA2D2690',f出现错误为:
服务器: 消息 8114,级别 16,状态 4,过程 sp_YG_StUnitMedPlan,行 0
将数据类型 nvarchar 转换为 float 时出错。

解决方案 »

  1.   

    sum(RetirePlanSum+OntheJobPlanSum)是flaot型
      

  2.   

    CREATE procedure sp_YG_StUnitMedPlan
    @unitID char(36),
    @plansum float output
    as
    --定义游标
    declare cur cursor for 
    select sum(RetirePlanSum+OntheJobPlanSum) 
    from HRW_YG_UnitMedicalPlan join ORG_Unit ON HRW_YG_UnitMedicalPlan.UnitID=ORG_Unit.ID
    where ID=@unitID----------------------這里改改
    --定义一个变量来接收游标的值
    --打开游标
    open cur
    set @plansum=0.0--给@plansum初值
    --提取游标的值
    fetch next from cur into @plansum
    if @@fetch_status <>0
      print '错误'
    print @plansum
    --关闭游标
    close cur
    --销毁游标
    deallocate cur
    GO
      

  3.   

    exec sp_YG_StUnitMedPlan '7AE0A3FB-2D6C-4E51-8B10-71EAFA2D2690',f
    ,f--傳參改改
      

  4.   

    declare @f float
    exec sp_YG_StUnitMedPlan '7AE0A3FB-2D6C-4E51-8B10-71EAFA2D2690',@f output--這樣用
      

  5.   

    GUID時不用加''引號
    ID=@unitID
      

  6.   

    select cast(sum(RetirePlanSum+OntheJobPlanSum) as float) from HRW_YG_UnitMedicalPlan join ORG_Unit ON HRW_YG_UnitMedicalPlan.UnitID=ORG_Unit.ID 
    where ID=''+@unitID+''