我正在使用Spring的JDBC支持在Oracle数据库上运行SQL查询和更新。我想插入一行,然后获取它所分配的密钥(使用Oracle序列)。在普通的JDBC代码中,我将包含一个RETURNING INTO子句,然后注册一个输出参数(well described here)
但是,我想使用Spring来处理我的所有JDBC工作。对于非插入SQL语句,我目前正在使用MapSqlParameterSource对象并注册我的所有输入参数。我是否还可以注册这样的输出参数并将其返回给我?我查看了Spring文档的第11章部分,如果我使用存储过程,我看到支持输出参数,但我想尽可能避免这样做。谢谢。
答案 0 :(得分:1)
我不认为Spring JDBC支持API提供对OUT参数的显式支持,因此您可能需要退一步并使用JdbcTemplate
提供的更通用的查询API:
Object execute(PreparedStatementCreator psc, PreparedStatementCallback action)
这使您可以在Spring管理的连接和PrepatedStatement
范围内执行任意JDBC操作。缺点是像ResultSets
这样的处理和整理会成为你的问题。
答案 1 :(得分:0)
查看此代码 - 它可能会执行您想要的操作,但不确定Oracle是否支持此语法。