首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用SimpleJdbcCall优化MSSQL中存储过程的执行

用SimpleJdbcCall优化MSSQL中存储过程的执行
EN

Stack Overflow用户
提问于 2018-07-05 12:56:03
回答 1查看 563关注 0票数 0

我有执行某些存储过程的代码。使用mssql-jdbc驱动程序连接到Microsoft数据库。

以下是简化的代码

代码语言:javascript
运行
复制
SimpleJdbcCall call = simpleJdbcCallFactory.create(jdbcTemplate)
    .withSchemaName(SCHEMA)
    .withProcedureName(SP)
    .declareParameters(
        new SqlParameter("Id1", Types.INTEGER),
        new SqlParameter("Id2", Types.TINYINT),
        new SqlParameter("Id3", Types.INTEGER))
    .returningResultSet("result", (rs, rowNum) -> MappingObject.builder()
            .id(rs.getInt("Id"))
            .date(rs.getTimestamp("Date"))
            // .......
            .build());

MapSqlParameterSource params = new MapSqlParameterSource();
params.addValue("Id1", 1);
params.addValue("Id2", 2);
params.addValue("Id3", 3);

Map queryRes = call.execute(params);  

当我运行它时,我在分析器3调用中看到:

  • exec sp_executesql N'EXEC sp_stored_procedures @P0, @P1, @P2 ',N'@P0 nvarchar(4000),@P1 nvarchar(4000),@P2 nvarchar(4000)',N'MY_SP_NAME',N'MY_NAMESPACE',NULL似乎检查存储过程是否存在。
  • exec sp_executesql N'EXEC sp_sproc_columns_100 @P0, @P1, @P2,@P3,@P4 ',N'@P0 nvarchar(4000),@P1 nvarchar(4000),@P2 nvarchar(4000),@P3 nvarchar(4000),@P4 nvarchar(4000)',N'MY_SP_NAME,N'MY_NAMESPACE',NULL,NULL,N'3'它得到这个sp的列信息
  • exec sp_executesql N'EXEC MY_NAMESPACE.MY_SP_NAME @P0, @P1, @P2 ',N'@P0 int,@P1 tinyint,@P2 int',1,2,3,最后它执行我的存储过程。

每次运行这个存储过程时,我都会在分析器3中看到sql调用。我只想打一个电话,用SimpleJdbcCall可以吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-05 13:15:03

我刚找到答案,也许这对某人有用。我们需要避免3次调用,只需withoutProcedureColumnMetaDataAccess() for SimpleJdbcCall

像这样

代码语言:javascript
运行
复制
SimpleJdbcCall getQACall = simpleJdbcCallFactory.create(jdbcTemplate)
    .withSchemaName(SCHEMA_ARTICLE)
    .withProcedureName(SP_GET_ALL_QUESTIONS_ANSWERS)
    .withoutProcedureColumnMetaDataAccess()
    .declareParameters(
    // etc
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51191886

复制
相关文章

相似问题

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