在C#上返回CreateSQLQuery的double值

时间:2018-03-24 21:07:23

标签: c# nhibernate fluent-nhibernate

早上好,我是C#的新手,我对我遇到的错误有疑问,并且阅读微软文档对我来说并不是很清楚。我有一个DAO类,它在数据库中创建一个sql查询,其返回值是一个数值(8.33),我使用CreateSqlQuery函数运行这个sql,如下所示:

public class TableNameDAO : ContextoHQL<TableName>
    {
        public double QueryExample(DateTime argDataIni)
        {
            double result = 0;
            ISession sessao = ObterSessao();

            var query = sessao.CreateSQLQuery(
                @"SELECT CAST((Z.GEN + Z.NGEN)/Z.GEN AS NUMERIC(20,2)) AS RESULT
                    FROM (
                        SELECT CAST(SUM(CASE WHEN S.TX_DESCRICAO = 'GENERICO' THEN W.QD_VENDA ELSE 0 END) 
                                        AS NUMERIC(20, 2)) AS GEN,
                                CAST(SUM(CASE WHEN S.TX_DESCRICAO <> 'GENERICO' AND S.CD_GRUPO = 32 
                                        THEN W.QD_VENDA ELSE 0 END) AS NUMERIC(20, 2)) AS NGEN
                        FROM TABLE1 AS W, TABLE2 AS P, TABLE3 AS S, TABLE4 AS G
                        WHERE P.ID_PRODUTO = W.CD_PRODUTO
                            AND G.ID_GRUPO = S.CD_GRUPO
                            AND S.ID_SUBGRUPO = P.CD_SUBGRUPO
                            And W.DT_REFERENCIA>=:DataIni
                    ) AS Z")
                .SetParameter("DataIni", argDataIni);

            result = Convert.ToDouble(query.UniqueResult());
            return result;
        }
    }

通过调试代码所做的测试,我发现问题出现在返回query.UniqueResult ()中,因为它返回null。我想知道是否有人遇到过这个问题以及可能的解决办法,谢谢。

0 个答案:

没有答案