使用ado执行存储过程,output参数无法设置精度 返回

SqlSugar 处理完成
18 220

老师,调用存储过程时,设置精度不起作用



var output = new SugarParameter("@num", 0, type: System.Data.DbType.Decimal, System.Data.ParameterDirection.Output);

output.Scale = 8;

db.Ado.UseStoredProcedure().GetDataTable("Web_Num", output);


///生成SQL

declare @p1 numeric(29,0) //小数位数应该是8

set @p1=2

exec Web_Num @num=@p1 output

select @p1


热忱回答18

  • fate sta fate sta VIP0
    1个月前

    你这个是打印的SQL不准的。

    你是什么库

    0 回复
  • fate sta fate sta VIP0
    1个月前

    sqlserver用sqlprofile监控 拿出真实SQL

    0 回复
  • cccppp cccppp VIP0
    1个月前

    image.png

    就是使用sqlprofiler抓取的

    0 回复
  • cccppp cccppp VIP0
    1个月前

    @fate sta:sqlserver 2008 和2016都是这样

    0 回复
  • cccppp cccppp VIP0
    1个月前

    @fate sta:我看了些源码,有两点,一个是SugarParameter没有重写scale,DbParameter可能具有某些约束,导致值没有更新过去

    还有一个就是GetSqlParameter里面,没有SqlParameter.scale赋值,我改了这两个地方就对了。还是说有其他方法正确配置吗?

    我不太清楚,

    0 回复
  • fate sta fate sta VIP0
    1个月前

    看库的兼容等级有没有改过来 ,存储过程 用decimal看一下

    0 回复
  • fate sta fate sta VIP0
    1个月前

    还有问题提供一个没有业务的测试存储过程

    不大可能有问题,因这么多年过去了有问题早有人提了

    0 回复
  • cccppp cccppp VIP0
    1个月前

    @fate staimage.png


    declare @p1 numeric(29,0)

    set @p1=2

    exec Web_Num @num=@p1 output

    select @p1


    是一样的

    0 回复
  • fate sta fate sta VIP0
    1个月前

    image.png

    兼容等级升级一下看看

    0 回复
  • fate sta fate sta VIP0
    1个月前

    还有存储过程提供 可以复制的脚本

    0 回复
  • cccppp cccppp VIP0
    1个月前

    @fate sta:里面有image.png

    3个 我都试了下,都一样,还是说其它方式升级?我对这个理解不太深

    0 回复
  • cccppp cccppp VIP0
    1个月前

    @fate sta

    Create PROCEDURE [dbo].[Web_Num]

    @num decimal(28,8) OUTPUT

    )


    --@encode$--

    AS

    SET NOCOUNT ON

    SET ANSI_WARNINGS OFF

    set @num=1.55555


    0 回复
  • cccppp cccppp VIP0
    1个月前

    @fate sta

    SqlSugarClient db = new SqlSugarClient(new ConnectionConfig()

    {

        DbType = DbType.SqlServer,

        ConnectionString = "server=localhost;database=jmjjj;uid=sa;pwd=hhhhhhh;Pooling=true;",

    });


    var output = new SugarParameter("@num", 0, type: System.Data.DbType.Decimal, System.Data.ParameterDirection.Output);

    db.Ado.UseStoredProcedure().GetDataTable("Web_Num", output);



    0 回复
  • fate sta fate sta VIP0
    1个月前

    SqlSugarCore 5.1.4.167-preview28


    更新到最新预览版本已修复

    0 回复
  • cccppp cccppp VIP0
    1个月前

    谢谢老师,麻烦了

    0 回复
  • cccppp cccppp VIP0
    1个月前

    @fate sta:老师方便发一个netframwork版本的吗

    0 回复
  • fate sta fate sta VIP0
    1个月前

    SqlSugar 5.1.4.167-preview28


    过五分钟后安装,不要提提前安装framework提交安装有BUG

    0 回复
  • cccppp cccppp VIP0
    1个月前

    @fate sta:谢谢老师 完美解决了 不过有一点就是那个Precision属性也需要照着改一下

    因为现在使用外币的很多,默认的29位可能快撑满了

    最后最后 十分谢谢老师耐心指导 

    0 回复