【发布时间】:2021-09-20 00:57:33
【问题描述】:
我在使用 Dapper 和 Mysql (MariaDB) 执行存储过程时遇到问题。
这是存储过程:
CREATE DEFINER = `user` @`%`
PROCEDURE database.`proc_EnterRow`(
IN `_entity_number` INT(11),
IN `_price` DECIMAL(19, 13),
IN `_valuation_date` DATETIME)
LANGUAGE SQL
NOT DETERMINISTIC
NO SQL
SQL SECURITY DEFINER
BEGIN
INSERT INTO tablename (entity_number,
entity_name,
valuation_date,
units,
price,
investor_code,
currency,
provisional,
isin,
type,
batchno,
maturity_date,
fx_rate,
transaction_id,
bond_reserves,
bond_reserves_percentage,
bond_reserves_conv,
sold,
verified)
SELECT entity_number,
entity_name,
_valuation_date,
units,
_price,
investor_code,
currency,
provisional,
isin,
type,
batchno,
maturity_date,
fx_rate,
transaction_id,
bond_reserves,
bond_reserves_percentage,
bond_reserves_conv,
sold,
verified
FROM tablename2 v
WHERE v.entity_number = _entity_number`;
END;
当我使用 sql 编辑器执行时,存储过程可以正常工作
call proc_EnterRow(111,123.5456,'2021-07-09');
但是当我使用 Dapper ORM 从我的 .Net Core 调用它时,我不断收到错误消息
PROCEDURE database.proc_EnterRow 的参数数量不正确;预期 3,得到 0
我的代码.Net代码
DynamicParameters_parameters = new DynamicParameters();
_parameters.Add("@_entity_number", 111, DbType.Int32, SetDirection(parameterDirection), 11);
_parameters.Add("@_price", 123.5501, DbType.Decimal, SetDirection(parameterDirection));
_parameters.Add("@_valuation_date", "2021-01-01", DbType.Date, SetDirection(parameterDirection);
_dapper.Execute("dbname.proc_EnterRow", _parameters, commandType: CommandType.StoredProcedure);
提前感谢您的帮助。
【问题讨论】:
-
您好@Roddy,能否分享您的代码,您是如何在
asp.net core代码中执行proc_EnterRow的? -
还有什么可以帮助您的吗?
标签: mysql stored-procedures asp.net-core-mvc mariadb dapper