达梦调用存储过程(有返回值)报"调用参数不兼容或者不匹配" 返回
1. 存储过程定义如下:
CREATE OR REPLACE PROCEDURE "XJ_Env"."spOutTest" ( DM_param1 VARCHAR(4) ,DM_param2 NVARCHAR(1000) ,DM_return out int ) AS BEGIN set DM_return = -3; END;
2. C#调用代码如下:
var returnvalue = new SugarParameter("@return", null, System.Data.DbType.Int32, ParameterDirection.ReturnValue); await _baseRepository.Db.Ado.UseStoredProcedure().ExecuteCommandAsync("spOutTest", new SugarParameter("@param1", "11"), new SugarParameter("@param2", "测试测试"), returnvalue ); return returnvalue.Value.ObjToInt();
3. 执行后报“[spOutTest]调用参数不兼容或者不匹配”
这段代码如果是sqlserver数据库的话,是可以执行的,但是DM数据库会报错,请问是什么原因。
热忱回答(13)
-
fate sta VIP01个月前
提供ADO.NET 可以用的方法,我这边告诉你sqlsugar如何用
0 回复 -
fate sta VIP01个月前
out
int 不是returnvalue
0 回复 -
pipiluo VIP01个月前
@fate sta:改成下面的代码以后,报System.NullReferenceException:“Object reference not set to an instance of an object.”
var returnvalue = new SugarParameter("@return", null, true); returnvalue.DbType = System.Data.DbType.Int32;
0 回复 -
pipiluo VIP01个月前
@fate sta:参数改成out也是报System.NullReferenceException:“Object reference not set to an instance of an object.”
var returnvalue = new SugarParameter("@return", null, System.Data.DbType.Int32, ParameterDirection.Output)
0 回复 -
fate sta VIP01个月前
用ado.net测试
0 回复 -
pipiluo VIP01个月前
@fate sta:解决了,
下面这句"@return"改成":return"就可以了。
var returnvalue = new SugarParameter(":return", null, System.Data.DbType.Int32, ParameterDirection.Output); in的参数可以是@也可以是冒号,但是out的参数必须是冒号。这个是否可以优化一下,让out也兼容@
0 回复 -
fate sta VIP01个月前
@pipiluo: 这个可以优化
0 回复 -
fate sta VIP01个月前
你的sqlsugar是最新的吗
0 回复 -
fate sta VIP01个月前
用新的试试,如果不行我来优化
0 回复 -
pipiluo VIP01个月前
@fate sta:升级到了5.1.4.171,还是不行
0 回复 -
fate sta VIP01个月前
SqlSugarCore 5.1.4.172-preview01
过五分钟后安装
0 回复 -
fate sta VIP01个月前
勾预览
0 回复 -
pipiluo VIP01个月前
@fate sta:试了一下,还是报空引用
我看了下新版的dll,文件版本还是5.1.4.171,这个有关系吗?
0 回复