存储过程的return值定义是numeric(18,2),为什么返回的值没有小数部分在查询分析器调试的时候能看到变量@Sum是带小数的,但是到了RETURN @Sum的时候就变成整数了,为嘛呀?

解决方案 »

  1.   

    create proc p
    @i numeric(18,2) output
    as
    set @i=5.0declare @ii numeric(18,2)
    exec p @ii output
    select @iideclare @ii int
    exec p @ii output
    select @ii5.00
    5接收的是int?
      

  2.   

    create function  function_name(@参数 类型....)
    returns numeric(18,2)
    as
    begin
    .
    .
      

  3.   

    create function cc(@a int)
    returns numeric(10,2)
    as
    begin
     return  @a 
    endgoselect dbo.cc(1)/*
    -----
    1.00
    */godrop function dbo.cc
      

  4.   

    CREATE PROCEDURE dbo.ContSum@pid int ASdeclare @maxContSum numeric(18,2)
    declare @Sum numeric(18,2)
    select @Sum=Cont_sum from 表 where pid=@pid
    declare GetMax cursor for '....'
    open GetMaxfetch next from GetMax into @maxContSum
    while @@fetch_status=0 begin
    set @Sum = @Sum -  @maxContSum
    fetch next from GetMax into @maxContSum
    endclose GetMax
    deallocate GetMax
    RETURN @Sum
    GO
      

  5.   

    解决了,最后改成这样了
    select @Sum
    RETURN 
      

  6.   

    create function returnNumeric
    (@numeric numeric(18,2))
    returns numeric(18,2)
    AS
    begin
    return (@numeric+100)
    endselect dbo.returnNumeric(83.44)
    /*
    -------------------- 
    183.44(所影响的行数为 1 行)
    */drop function returnNumeric