callStmt = con.prepareCall("{call testAA(?,?)}");
      callStmt.setString(1,"000000000026");
      callStmt.setString(2,"添加添加添加");
      if (callStmt.executeUpdate()==0){
        System.out.println("============success================");
      }else{
        System.out.println("============failure================");
      }
函数:
function testAA(id in varchar2,na in varchar2)RETURN VARCHAR2
  is
  begin
    insert into table(id, name ) values(id,na);
    commit;
  end testAA;

解决方案 »

  1.   

    提示错误
    java.sql.SQLException: ORA-06550: 第 1 行, 第 7 列: 
    PLS-00221: 'TESTAA' 不是过程或尚未定义
    ORA-06550: 第 1 行, 第 7 列: 
    PL/SQL: Statement ignored
      

  2.   

    'TESTAA' 不是过程或尚未定义你自己写一个procedure去调用TESTAA然后在JDBC调用这个procedure不就可以了。
      

  3.   

    sql 是string类型的,你自己看着办把
      

  4.   

    java不能直接调用函数吗???怎么调用???
      

  5.   

    当然可以直接调用阿returnType:输出参数序号 int 类型
    callStmt = con.prepareCall("{? = call testAA(?,?)}");
          callStmt.registerOutParameter(1, returnType);
          callStmt.setString(2,"000000000026");
          callStmt.setString(3,"添加添加添加");
          callStmt.execute();
          result = cstmt.getObject(1);
      

  6.   

    function testAA(id in varchar2,na in varchar2)RETURN VARCHAR2
      is
      begin
        insert into table(id, name ) values(id,na);
        commit;
      end testAA;没有return,为什么定义成function ? 定义成procedure才合理