简体   繁体   English

如何从Java程序调用Oracle Function

[英]How to call Oracle Function from Java program

How to call Oracle Function from Java program... 如何从Java程序调用Oracle Function ...
I'm trying to access a function in my db, but i'm not able to do it. 我正在尝试访问数据库中的函数,但无法执行。 I'm doing it in same way as accessing oracle stored procedure. 我这样做的方式与访问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());

    }
  • make sure your XTRA_TSF_CRE_SQL schema has a function name as XTRA_TSF_CRE_SQL. 确保您的XTRA_TSF_CRE_SQL模式的函数名称为XTRA_TSF_CRE_SQL。
  • is you User (which use by java program) has privilege to access this function. 是用户(由Java程序使用)具有访问此功能的特权。
  • You can get that error if you have an object with the same name as the schema. 如果您有一个与架构同名的对象,则会出现该错误。

may be it will solve your problem . 可能会解决您的问题。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM