请教一个ROUNDUP的问题
请各位帮帮忙   
 在SQL里面怎么不能用ROUNDUP和ROUNDDOWN
------解决方案--------------------可以用ROUND函数 
 -------------------------   
 ROUND 
 返回数字表达式并四舍五入为指定的长度或精度。   
 语法 
 ROUND ( numeric_expression , length [ , function ] )      
 注释 
 ROUND 始终返回一个值。如果 length 是负数且大于小数点前的数字个数,ROUND 将返回 0。   
 示例 结果  
 ROUND(748.58, -4)-- 0      
 当 length 是负数时,无论什么数据类型,ROUND 都将返回一个四舍五入的 numeric_expression。   
 示例 结果  
 ROUND(748.58, -1) --750.00  
 ROUND(748.58, -2) --700.00  
 ROUND(748.58, -3) --1000.00      
 示例 
 A. 使用 ROUND 和估计值 
 下例显示两个表达式,说明使用 ROUND 函数且最后一个数字始终是估计值。   
 SELECT ROUND(123.9994, 3), ROUND(123.9995, 3)  
 GO   
 下面是结果集:   
 ----------- ----------- 
 123.9990    124.0000       
 B. 使用 ROUND 和四舍五入的近似值 
 下例显示四舍五入和近似值。   
 语句 结果  
 SELECT ROUND(123.4545, 2) 
  123.4500    
 SELECT ROUND(123.45, -2) 
  100.00        
 C. 使用 ROUND 截断 
 下例使用两个 SELECT 语句说明四舍五入和截断之间的区别。第一个语句四舍五入结果。第二个语句截断结果。   
 语句 结果  
 SELECT ROUND(150.75, 0) 
  151.00    
 SELECT ROUND(150.75, 0, 1) 
  150.00        
------解决方案--------------------以roundup为例: 
 比如用vb写的dll,其工程名是ClassFun,类名为Fun:   
 Dim excelT As New Excel.Application 
 Public Function RoundUp(para As String, pos As String) As Double 
 Dim returnT As Double   
 excelT.Workbooks.Add 
 excelT.Visible = False 
 excelT.ActiveCell.FormulaR1C1 =  "=roundup( " & para &  ", " & pos &  ") " 
 returnT = excelT.ActiveCell.Value   
 Stdev = returnT 
 Set excelT = Nothing 
 End Function   
 这个dll在sql中就可以用存储过程来调用 
 如: 
 declare @o int 
 declare @s int 
 declare @out real 
 declare @para varchar(100),@pos varchar(2) 
 exec @s=sp_oacreate  'ClassFun.Fun ',@o output 
 if @s <> 0 
     print  'error create object '   
 set @para= '23.34234 '--被格式参数 
 set @pos= '3 '--格式为3位 
 exec @s=sp_oamethod @o, 'RoundUp ',@out output, @para,@pos   
 select @out                 
 ------------------------  
 23.343   
 (所影响的行数为 1 行)