当前位置: 首页 > 知识库问答 >
问题:

使用SimpleJdbcCall调用不使用当前模式的存储过程

林俊晖
2023-03-14

我试图使用Spring JDBC模板调用postgres数据库中的存储过程。通过yaml配置文件完成连接,以指示要使用的当前架构:

jdbc:postgresql://localhost:5455/userdb?currentSchema=customschema

直接从jdbc模板完成的每个查询都使用了正确的当前模式“自定义模式”。但是,只有从SimpleJdbcCall执行以调用存储过程是在postgres默认模式“公共”中完成的,我不明白为什么。

以下是执行代码:

new SimpleJdbcCall(jdbcTemplate).withFunctionName("custom_stored_procedure_name").execute();

在调试时,如果我查看jdbcTemplate.getDataSource(). getConnection(). getSchema(),它会返回正确的模式,即“自定义模式”。

我需要强制使用的模式。with SchemaName("CustSchema")以便此执行使用正确的模式而不是“public”。

我无法在网上找到有关此行为的任何文档。

这是图书馆本身的问题吗?

共有1个答案

吕向阳
2023-03-14

为每个调用指定架构或将架构添加到搜索路径。

 类似资料:
  • 我有一个在包中定义的存储过程。该过程接受两个参数,一个是游标: 我是这样调用这个过程的: 它将返回以下错误: 你好,阿尼尔班。

  • 问题内容: 我在使用hibernate和MySQL时遇到了一些问题。我一直在读书,但我变得更加困惑,所以我想你可以帮助我理解下一步该怎么做。 我有一个MySQL数据库,在其中添加了此存储过程(感谢Stack Overflow的人们) 我读过某个地方,使用hibernate模式调用函数和过程将非常相似。然后,我发现(巧合地也在StackOverflow中)使用Hibernate从我的Java应用程序

  • 问题内容: 我已经使用PDO一段时间了,并且正在重构一个项目,以便它使用存储的proc而不是内联SQL。我收到一个我无法解释的错误。我正在使用PHP版本5.3.5和MySQL版本5.0.7。 我只是想获得一个带有输出的基本存储过程。这是存储的过程: 这是我用来调用proc的代码,$ db是PDO的一个实例: 简单吧?但是,它导致以下错误: 如果我直接这样调用proc: 它按预期工作,这使我相信PH

  • 我有一个接受CLOB输入和REFCURSOR输出的Oracle存储过程。我通过传递RowMapper的Spring SimpleJdbcCall调用SP来映射结果。 但是,由于结果集很大,我需要为客户端提供回调功能。我不太清楚如何使用Spring为SP调用添加回调-包括SimpleJdbcCall和不包括SimpleJdbcCall。 我的一个想法是传入一个RowCallbackHandler。这

  • 我正在尝试学习存储库模式,似乎有点困惑,当我急于加载关系并将db逻辑排除在控制器之外时,如何使用此存储库模式。 快速概述我的存储库/应用程序结构。 示例ProductInterface。php 示例类别接口。php 好的,最简单的部分是使用DI向控制器注入模型依赖关系。 列出与相关产品的所有类别更加困难,因为我不再使用雄辩的模型。我正在使用一个界面,它没有暴露所有雄辩的方法。 如果我没有在我的El

  • 我刚开始冬眠。我试图通过Hibernate调用oracle存储过程。我可以按照一些步骤通过Hibernate调用过程吗。 提前谢了。