如何从Java程序调用Oracle Function ...
我正在尝试访问数据库中的函数,但无法执行。我以与访问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());

    }

最佳答案

确保您的XTRA_TSF_CRE_SQL模式的函数名称为XTRA_TSF_CRE_SQL。
是用户(由Java程序使用)具有访问此功能的特权。
如果您有一个与架构同名的对象,则会出现该错误。


可能会解决您的问题。

10-06 12:13