如何从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程序使用)具有访问此功能的特权。
如果您有一个与架构同名的对象,则会出现该错误。
可能会解决您的问题。