首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Server上不返回值的存储过程

在Server上不返回值的存储过程
EN

Stack Overflow用户
提问于 2017-03-23 13:59:40
回答 3查看 812关注 0票数 0

我有一个存储过程,我试图从DAO实现类中执行它。但我没有得到任何结果。在我的列表中,我看到返回值为null。

我的DAO代码,它执行存储过程

编辑的Dao:

代码语言:javascript
复制
 @Repository
 public class OhlcDaoImpl implements OhlcDao {

@Autowired
SessionFactory sessionFactory;
Session session;

 public List getOhlc(Result result) {
    session = sessionFactory.openSession();
 SQLQuery query = session.createSQLQuery("EXEC getOhlc :stockSymbol, :statementType, :financialDataTypeId, :fiscalYearId");
 query.setString("stockSymbol",result.getStockSymbol());
 query.setString("statementType",result.getStatementType());
 query.setInteger("financialDataTypeId",result.getFinancialDataTypeId());
 query.setInteger("fiscalYearId",result.getFiscalYearId());

 List l = query.list();
return l;
}
}

我试图将int字段的int参数更改为setInteger,但仍然没有结果。

DefaultController.java

控制器类调用服务,服务调用dao。服务只有一个带有getData方法的接口类和一个实现类。

代码语言:javascript
复制
    @RequestMapping(value = "/getData",method = RequestMethod.POST)
public List getData(@RequestBody Result result){
    List l =ohlcService.getData(result);
    return l;
}

我的存储过程

代码语言:javascript
复制
USE [Wealth_1_0_0_Srv]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER Procedure [dbo].[getOhlc]
(
@stockSymbol varchar(50),
@statementType varchar(50),
@financialDataTypeId int,
@fiscalYearId int
)
As
Begin
Set Nocount on;
Set Arithabort on;

Select    fdd.FinancialHeadId,isnull(ftd.FinancialHeadText,fh.FinancialHeadName)FinancialHeadName,fdd.Value,isnull(ftd.Bold,0)Bold,isnull(ftd.RowSeq,0)RowSeq
from FinancialDataMast fdm
    inner join FinancialDataDetl fdd on fdd.MastId=fdm.Id
    inner join FinancialHeading fh on fh.Id=fdd.FinancialHeadId
    inner join Stock s on s.Id=fdm.StockId
    INNER JOIN StatementType st ON st.Id = fdm.StatementTypeId
    left outer join FinancialTemplateMast ftm on ftm.StatementTypeId=fdm.StatementTypeId and ftm.SectorId=s.SectorId and ftm.FinancialReportType=(Case fdm.FinancialDataTypeId when 0 then 2 else 1 end)
    left outer join FinancialTemplateDetl ftd on ftd.MastId=ftm.Id and ftd.FinancialHeadId=fdd.FinancialHeadId
where s.StockSymbol=@stockSymbol and st.StatementTypeName=@statementType and fdm.FinancialDataTypeId=@financialDataTypeId  and fdm.FiscalYearId=@fiscalYearId
order by isnull(ftd.RowSeq,0) asc
End

我的参数很好。在调试模式下,我可以看到它们,但我没有得到任何结果集。

EN

回答 3

Stack Overflow用户

发布于 2017-03-23 15:24:27

它看起来像是在调用过程,它不返回值--只需在内部执行查询,就应该创建函数。

票数 0
EN

Stack Overflow用户

发布于 2017-03-23 16:18:44

试试这个:

代码语言:javascript
复制
System.out.println(String.format("stockSymbol %s, statementType %s, financialDataTypeId %d, fiscalYearId %d", result.getStockSymbol(), result.getStatementType(), result.getFinancialDataTypeId(), result.getFiscalYearId()));

SQLQuery query = session.createSQLQuery("EXEC getOhlc :stockSymbol, :statementType, :financialDataTypeId, :fiscalYearId");
 query.setString("stockSymbol",result.getStockSymbol());
 query.setString("statementType",result.getStatementType());
 query.setInteger("financialDataTypeId",result.getFinancialDataTypeId());
 query.setInteger("fiscalYearId",result.getFiscalYearId());

List l = query.list();

请在hibernate配置中添加以下行:

代码语言:javascript
复制
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<property name="use_sql_comments">true</property>

或者如果您使用log4j,请添加以下内容:

代码语言:javascript
复制
log4j.logger.org.hibernate=INFO, hb
log4j.logger.org.hibernate.SQL=DEBUG
log4j.logger.org.hibernate.type=TRACE

log4j.appender.hb=org.apache.log4j.ConsoleAppender
log4j.appender.hb.layout=org.apache.log4j.PatternLayout

这样,您就可以检查执行了什么。

票数 0
EN

Stack Overflow用户

发布于 2017-03-24 11:03:46

感谢所有回答的人。这一问题没有得到解决。它是映射问题,所以我映射了所有返回的列,如下所示

代码语言:javascript
复制
query.addScalar("FinancialHeadId", IntegerType.INSTANCE);
query.addScalar("FinancialHeadName", StringType.INSTANCE);
query.addScalar("Value",IntegerType.INSTANCE);
query.addScalar("Bold",IntegerType.INSTANCE);
query.addScalar("RowSeq",IntegerType.INSTANCE);

问题解决了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42978260

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档