JDBC调用PL/SQL函数

来源:互联网 发布:淘宝直播怎么上传宝贝 编辑:程序博客网 时间:2024/05/14 09:48

函数的一般的格式: 
         1.       CREATE OR REPLACE FUNCTUION funcion_name [参数表列]        
         2.        RETURN DATATYPE        
         3.        IS|AS        
         4.        PL/SQL BLOCK        

举例应用: 
Java代码 
     1. CREATE OR REPLACE FUNCTION get_age(per_id in person_id)    
     2.        return number    
     3.    is    
     4.        v_age person.id%type :=0;    
     5.    begin    
     6.        select age    
     7.        into V_age    
     8.        from person    
     9.        where id=per_id;    
    10.        return v_age;    
    11.    end get_age;    
    12.    /    

在java代码里去调用函数:
  CallableStatement cs;
  try {
  // 调用一个没有参数的函数; 函数返回 a int
  // 预处理callable语句
     1. cs = connection.prepareCall("{? = call get_age}");    
     2. // 注册返回值类型    
     3. cs.registerOutParameter(1, i);    
     4. // Execute and retrieve the returned value    
     5. cs.execute();    
     6. int retValue = cs.getInt(1); 
    cs = connection.prepareCall("{? = call get_age}");
    // 注册返回值类型
    cs.registerOutParameter(1, i);
    // Execute and retrieve the returned value
    cs.execute();
    int retValue = cs.getInt(1);

  // 调用有一个in参数的函数; the function returns a number 
     1. cs = connection.prepareCall("{? = call get_age(?)}");    
     2.    // Register the type of the return value    
     3.    cs.registerOutParameter(1, Types.number);    
     4.    // Set the value for the IN parameter    
     5.    cs.setInt(2, 95001);    
     6.    // Execute and retrieve the returned value    
     7.    cs.execute();    
     8.    retValue = cs.getInt(1);    

    // 调用有一个out参数的函数; the function returns a VARCHAR
    cs = connection.prepareCall("{? = call get_age(?)}");
    // Register the types of the return value and OUT parameter
    cs.registerOutParameter(1, Types.VARCHAR);
    cs.registerOutParameter(2, Types.VARCHAR);
    
    // Execute and retrieve the returned values
    cs.execute();
    retValue = cs.getString(1);            // return value
    String outParam = cs.getString(2);    // OUT parameter

   
  // 调用有一个in/out参数的函数; the function returns a VARCHAR 
     1. cs = connection.prepareCall("{? = call get_age(?)}");    
     2.     // Register the types of the return value and OUT parameter    
     3.     cs.registerOutParameter(1, Types.NUMBER);    
     4.     cs.registerOutParameter(2, Types.NUMBER);    

  // Set the value for the IN/OUT parameter 
     1. cs.setInt(2, 95002);    
     2.     
     3. // Execute and retrieve the returned values    
     4. cs.execute();    
     5. retValue = cs.getInt(1);            // return value    
     6. outParam = cs.getInt(2);            // IN/OUT parameter    
     7. } catch (SQLException e) {    
     8. }    

转自:http://jdnis.javaeye.com/blog/219990
原创粉丝点击