2016-03-29 27 views
0

NHibernate aracılığıyla saklı yordamı nasıl arayacağımı bilmiyorum. Bu yüzden aşağıdaki gibi arama yaptım ve kodlandım.C# Nhibernate tarafından mysql saklı yordamı yürütülemiyor

Saklı Yordam ÖNCE tetikleyici bir değişken veya YENİ sözde değişken Ama hata

OUT veya rutin INOUT argüman 3 var değil:

DELIMITER $$ 
USE ih$$ 
DROP PROCEDURE IF EXISTS ms_getDate$$ 
CREATE [email protected]% 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> 

Kod

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){} 

} 
parametresini kaldırmak ve sadece kullanarak değeri döndürmek gerekir

cevap

0

: Şu

CREATE [email protected]% PROCEDURE ms_getDate() 
BEGIN 
    SELECT a.Type as datetype 
    FROM hr_employees a WHERE a.Flag= '1'; 
END 

, sen Thi var Bir parametre olarak ancak prosedürü çağırdığınızda, onu belirtmezsiniz.

Her zamanki gibi, NHProfiler'i kullanmış olsaydınız, kolayca kendiniz bulabilirdiniz.