注册

用sqlSugar调用达梦数据库存储过程,有出参的情况就报错:对象为空

DM_768280 2024/10/12 397 1

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:8
【操作系统】:win 10
【CPU】:
【问题描述】*:我安装的DM是dm8_20240710_x86_win_64.iso

存储过程很简单,就是往测试表里面插一条数据,然后返回自增的主键ID。

用的SqlSugarCore,

抛出的异常:System.NullReferenceException: Object reference not set to an instance of an object.

存储过程如下:CREATE OR REPLACE PROCEDURE "dbo"."asp_aa" (
DM_id out int,
DM_b char(5),
DM_c char(5)
)
AS
BEGIN
insert into taba(b) values(DM_b||DM_c);
DM_id = @@identity;
END;

C#代码如下:
SqlSugarClient db = new SqlSugarClient(new ConnectionConfig()
{
ConnectionString = PubConnectionString,//连接符字串
DbType = SqlSugar.DbType.Dm,
IsAutoCloseConnection = true,
InitKeyType = InitKeyType.Attribute//从特性读取主键自增信息
});

var para = new SugarParameter[] {
new SugarParameter("@DM_id",-1,true),
new SugarParameter("@DM_b","17"),
new SugarParameter("@DM_c","17")
};

var result1 = db.Ado.UseStoredProcedure().GetDataTable(sprocName, para); //运行到这里报对象为空的异常,GetDataTable换成ExecuteCommand,问题依旧

但是:如果把存储过程的出参去掉,C#代码里面也把出参去掉,那么就运行正常,不会报错。

可见是出参的原因,个么有什么方法能使得sqlSugar能够正常调用带出参的存储过程,并且获取到执行之后出参的值吗?

回答 0
暂无回答
扫一扫
联系客服