以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  为什么返回的小数变成了整数?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=192998)

--  作者:HappyFt
--  发布时间:2024/8/8 16:17:00
--  为什么返回的小数变成了整数?
  \'通过储存过程获取当前仓库当前产品的即时库存
        cmd.CommandText = "usp_kcquery_pcodeck"
        cmd.StoredProcedure = True
        cmd.Parameters.Add("@qty", 0, False) \'这是第一个参数,用于获取存储过程的返回值
        cmd.Parameters.Add("@pcode", pcode) \'第二个参数指定输入参数
        cmd.Parameters.Add("@ck", ck) \'第三个参数指定输入参数
        cmd.ExecuteNonQuery
        Dim qty_kc As Double = Cmd.Parameters("@qty") \'取得存储过程的返回值
        MessageBox.Show(qty_kc)

从后台返回一个值,后台sql中print出来是2.6,为何用上面代码返回到foxtable中显示变为2,小数不见了,
如果要保存小数,上面红色代码应该如何写?
谢谢

--  作者:有点蓝
--  发布时间:2024/8/8 16:29:00
--  
存储过程里定义的返回参数类型是整数吧
--  作者:HappyFt
--  发布时间:2024/8/8 16:47:00
--  
没有呀,定义的是float,储存过程中是下面这样的
 --返回期末数量
 DECLARE @qty FLOAT
  SELECT  @qty = ISNULL(@numS,0) + ISNULL(@num2,0);
 --PRINT @qty
 RETURN @qty;

返回前在后端print打开都是显示2.6,
到前端用一楼的代码显示时就变成2了

--  作者:有点蓝
--  发布时间:2024/8/8 16:58:00
--  
试试

SELECT  @qty = ISNULL(@numS,0.0) + ISNULL(@num2,0.0);

……

cmd.Parameters.Add("@qty", 0F, False) 

--  作者:HappyFt
--  发布时间:2024/8/8 18:12:00
--  
还是不可以,是不是前端设置接收返回参数那里只能接收整数,或者是要怎么设置一下才可以
--  作者:有点蓝
--  发布时间:2024/8/8 20:17:00
--  
百度了一下,RETURN 值的范围是 0 到 255。改为使用输出参数吧
--  作者:HappyFt
--  发布时间:2024/8/9 8:54:00
--  
谢谢蓝老师,可以了