首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java命名参数的名称(用于Oracle JDBC函数结果)

Java命名参数的名称(用于Oracle JDBC函数结果)
EN

Stack Overflow用户
提问于 2010-09-13 19:18:17
回答 3查看 9.9K关注 0票数 4

我将调用一个函数,并按名称设置一些参数,例如:

代码语言:javascript
复制
    Connection c = null;
    ResultSet rs = null;
    String query;
    PreparedStatement ps;
    CallableStatement cs = null;
    try {
        c = DbUtils.getConnection();
        cs = c.prepareCall("{? = call get_proc_name(?, ?) }");
        cs.registerOutParameter(1, OracleTypes.VARCHAR);
        cs.setInt("in_proc_type", ProcTypes.SELECT);
        cs.setLong("in_table_id", tableId);
        // here I should use something like cs.registerOutParameter("result", OracleTypes.VARCHAR);
        cs.execute();

PL/SQL函数参数包括:

代码语言:javascript
复制
CREATE OR REPLACE FUNCTION get_proc_name
(
  in_proc_type IN NUMBER, /*1 - insert, 2 - update, 3 - delete, 4 - select*/
  in_table_name IN VARCHAR2 := NULL,
  in_table_id IN NUMBER := NULL,
  in_table_type_id IN NUMBER := NULL,
  is_new IN NUMBER := 0
) RETURN VARCHAR2

问题是如何将结果注册为out参数,然后将其从oracle获取到java?我可以通过名称注册in/out参数,因为我从function中知道它们的名称,但我不知道go如何获得函数结果,它使用什么变量名。

手册只描述了使用过程的in/out参数,而不是函数。

Oracle版本: 11.1.0.6.0 Java版本: 1.6.0_14

EN

Stack Overflow用户

发布于 2010-09-13 19:31:46

CallableStatement有一堆获取索引的registerXXX方法。

这就是注册结果的方式。它是参数编号1。

在你的情况下,

代码语言:javascript
复制
cs.registerOutParameter( 1, java.sql.Types.VARCHAR);

顺便说一句,因为您正在为result使用索引,所以您可能需要使用面向索引的setXXX方法并提供完整的参数列表。

票数 1
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3699891

复制
相关文章

相似问题

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