gpt4 book ai didi

C# 无法通过 Nhibernate 执行 mysql 存储过程

转载 作者:行者123 更新时间:2023-11-29 21:12:04 24 4
gpt4 key购买 nike

我不知道如何通过 NHibernate 调用存储过程。所以我搜索并编码如下。但我得到了错误

OUT or INOUT argument 3 for routine is not a variable or NEW pseudo-variable in BEFORE trigger

存储过程:

DELIMITER $$
USE ih$$
DROP PROCEDURE IF EXISTS ms_getDate$$
CREATE DEFINER=root@% PROCEDURE ms_getDate(OUT datetype VARCHAR(2))
BEGIN
SET datetype = 0;
SELECT a.Type into datetype
FROM hr_employees a WHERE a.Flag= '1';
END$$
DELIMITER;

C#

NHibernate

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" >
<sql-query name="ms_getDate" callable="true" >
<return-scalar column="datetype" type="String" />
call ms_getDate
</sql-query>
</hibernate-mapping>

代码

public class At_InsertPlanningStoredProcedure
{
public virtual int datetype { get; set; }
}
<小时/>
using (DbSession dbSession = new DbSession())
{
try
{
IQuery query = dbSession.session.GetNamedQuery("at_insertplanning");
At_InsertPlanningStoredProcedure a = query.UniqueResult<At_InsertPlanningStoredProcedure>();
}catch (Exception ex){}

}

最佳答案

您需要删除参数并仅返回值:

CREATE DEFINER=root@% PROCEDURE ms_getDate()
BEGIN
SELECT a.Type as datetype
FROM hr_employees a WHERE a.Flag= '1';
END

目前,您将此作为参数,但在调用该过程时,无需指定它。

像往常一样,如果您使用过 NHProfiler,您自己会很容易找到它。

关于C# 无法通过 Nhibernate 执行 mysql 存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36275807/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com