首页 > 解决方案 > 如何从 Java 程序中调用 Oracle 函数

问题描述

如何从 Java 程序调用 Oracle 函数...
我正在尝试访问我的数据库中的一个函数,但我无法做到。我这样做的方式与访问 oracle 存储过程的方式相同。

String packageCallStmt = "{? = call XTRA_TSF_CRE_SQL.XTRA_TSF_CRE(?, ?, ?, ?, ?) }";
    try{

        conn = jdbcTemplate.getDataSource().getConnection();
        System.out.println("Inside TransferCreationDAO - Before function call");
        OracleCallableStatement oracleCallableStmt = (OracleCallableStatement) conn.prepareCall(packageCallStmt);
        oracleCallableStmt.setInt(2, src_id);   
        oracleCallableStmt.setInt(3, dest_id);
        oracleCallableStmt.setString(4, refNo);
        oracleCallableStmt.setString(5, item);
        oracleCallableStmt.setInt(6, qty);
        oracleCallableStmt.registerOutParameter(1, OracleTypes.VARCHAR);
        oracleCallableStmt.executeUpdate();
        System.out.println("Inside TransferCreationDAO - After function call");
        tcr.setTsf_No(((OracleCallableStatement) oracleCallableStmt).getString(1));
        System.out.println("Inside TransferCreationDAO - Tsf Number:"+tcr.getTsf_No());

    }

标签: javaoraclefunctionjdbc

解决方案


  • 确保您的 XTRA_TSF_CRE_SQL 架构的函数名称为 XTRA_TSF_CRE_SQL。
  • 您是用户(由 java 程序使用)是否有权访问此功能。
  • 如果您有一个与架构同名的对象,您可能会收到该错误。

也许它会解决你的问题。


推荐阅读