CREATE PROCEDURE dbo.L2U (@n_LowerMoney numeric(15,2),@v_TransType int,@RET VARCHAR(200) output) AS Declare @v_LowerStr VARCHAR(200) -- 小写金额 Declare @v_UpperPart VARCHAR(200) Declare @v_UpperStr VARCHAR(200) -- 大写金额Declare @i_I intset nocount onselect @v_LowerStr = LTRIM(RTRIM(STR(@n_LowerMoney,20,2))) --四舍五入为指定的精度并删除数据左右空格select @i_I = 1select @v_UpperStr = ' 'while ( @i_I <= len(@v_LowerStr))begin select @v_UpperPart = case substring(@v_LowerStr,len(@v_LowerStr) - @i_I + 1,1) WHEN '. ' THEN '元 ' WHEN '0 ' THEN '零 ' WHEN '1 ' THEN '壹 ' WHEN '2 ' THEN '贰 ' WHEN '3 ' THEN '叁 ' WHEN '4 ' THEN '肆 ' WHEN '5 ' THEN '伍 ' WHEN '6 ' THEN '陆 ' WHEN '7 ' THEN '柒 ' WHEN '8 ' THEN '捌 ' WHEN '9 ' THEN '玖 ' END + case @i_I WHEN 1 THEN '分 ' WHEN 2 THEN '角 ' WHEN 3 THEN ' ' WHEN 4 THEN ' ' WHEN 5 THEN '拾 ' WHEN 6 THEN '佰 ' WHEN 7 THEN '仟 ' WHEN 8 THEN '万 ' WHEN 9 THEN '拾 ' WHEN 10 THEN '佰 ' WHEN 11 THEN '仟 ' WHEN 12 THEN '亿 ' WHEN 13 THEN '拾 ' WHEN 14 THEN '佰 ' WHEN 15 THEN '仟 ' WHEN 16 THEN '万 ' ELSE ' ' ENDselect @v_UpperStr = @v_UpperPart + @v_UpperStrselect @i_I = @i_I + 1end--------print '//v_UpperStr = [email protected]_UpperStr + '// 'if ( @v_TransType=0 )beginselect @v_UpperStr = REPLACE(@v_UpperStr, '零拾 ', '零 ') select @v_UpperStr = REPLACE(@v_UpperStr, '零佰 ', '零 ') select @v_UpperStr = REPLACE(@v_UpperStr, '零仟 ', '零 ') select @v_UpperStr = REPLACE(@v_UpperStr, '零零零 ', '零 ')select @v_UpperStr = REPLACE(@v_UpperStr, '零零 ', '零 ')select @v_UpperStr = REPLACE(@v_UpperStr, '零角零分 ', '整 ')select @v_UpperStr = REPLACE(@v_UpperStr, '零分 ', '整 ')select @v_UpperStr = REPLACE(@v_UpperStr, '零角 ', '零 ')select @v_UpperStr = REPLACE(@v_UpperStr, '零亿零万零元 ', '亿元 ')select @v_UpperStr = REPLACE(@v_UpperStr, '亿零万零元 ', '亿元 ')select @v_UpperStr = REPLACE(@v_UpperStr, '零亿零万 ', '亿 ')select @v_UpperStr = REPLACE(@v_UpperStr, '零万零元 ', '万元 ')select @v_UpperStr = REPLACE(@v_UpperStr, '万零元 ', '万元 ')select @v_UpperStr = REPLACE(@v_UpperStr, '零亿 ', '亿 ')select @v_UpperStr = REPLACE(@v_UpperStr, '零万 ', '万 ')select @v_UpperStr = REPLACE(@v_UpperStr, '零元 ', '元 ')select @v_UpperStr = REPLACE(@v_UpperStr, '零零 ', '零 ')end-- 对壹元以下的金额的处理 if ( substring(@v_UpperStr,1,1)= '元 ' )begin select @v_UpperStr = substring(@v_UpperStr,2,(len(@v_UpperStr) - 1))endif (substring(@v_UpperStr,1,1)= '零 ')begin select @v_UpperStr = substring(@v_UpperStr,2,(len(@v_UpperStr) - 1))endif (substring(@v_UpperStr,1,1)= '角 ')begin select @v_UpperStr = substring(@v_UpperStr,2,(len(@v_UpperStr) - 1))endif ( substring(@v_UpperStr,1,1)= '分 ')begin select @v_UpperStr = substring(@v_UpperStr,2,(len(@v_UpperStr) - 1))endif (substring(@v_UpperStr,1,1)= '整 ')begin select @v_UpperStr = '零元整 'endselect @[email protected]_UpperStrGO
调用过程:
declare @ret varchar(200)exec L2U 567983.897,1,@ret outputselect @ret