• JAVA中调用存储过程和函数


    参考网址:http://www.exampledepot.com/egs/java.sql/CallProcedure.html

    Calling a Stored Procedure in a Database

    This example demonstrates how to call stored procedures with IN, OUT, and IN/OUT parameters.
    CallableStatement cs;
    try {
      // Call a procedure with no parameters
        cs = connection.prepareCall("{call myproc}");
        cs.execute();
    
      // Call a procedure with one IN parameter
        cs = connection.prepareCall("{call myprocin(?)}");
    
        // Set the value for the IN parameter
        cs.setString(1, "a string");
    
        // Execute the stored procedure
        cs.execute();
    
      // Call a procedure with one OUT parameter
        cs = connection.prepareCall("{call myprocout(?)}");
    
        // Register the type of the OUT parameter
        cs.registerOutParameter(1, Types.VARCHAR);
    
        // Execute the stored procedure and retrieve the OUT value
        cs.execute();
        String outParam = cs.getString(1);     // OUT parameter
    
      // Call a procedure with one IN/OUT parameter
        cs = connection.prepareCall("{call myprocinout(?)}");
    
        // Register the type of the IN/OUT parameter
        cs.registerOutParameter(1, Types.VARCHAR);
    
        // Set the value for the IN/OUT parameter
        cs.setString(1, "a string");
    
        // Execute the stored procedure and retrieve the IN/OUT value
        cs.execute();
        outParam = cs.getString(1);            // OUT parameter
    } catch (SQLException e) {
    }

    参考网址:http://www.exampledepot.com/egs/java.sql/CallFunction.html

    Calling a Function in a Database

    A function is essentially a stored procedure that returns a result. This example demonstrates how to call functions with IN, OUT, and IN/OUT parameters.
    CallableStatement cs;
    try {
      // Call a function with no parameters; the function returns a VARCHAR
        // Prepare the callable statement
        cs = connection.prepareCall("{? = call myfunc}");
    
        // Register the type of the return value
        cs.registerOutParameter(1, i);
    
        // Execute and retrieve the returned value
        cs.execute();
        String retValue = cs.getString(1);
    
      // Call a function with one IN parameter; the function returns a VARCHAR
        cs = connection.prepareCall("{? = call myfuncin(?)}");
    
        // Register the type of the return value
        cs.registerOutParameter(1, Types.VARCHAR);
    
        // Set the value for the IN parameter
        cs.setString(2, "a string");
    
        // Execute and retrieve the returned value
        cs.execute();
        retValue = cs.getString(1);
    
      // Call a function with one OUT parameter; the function returns a VARCHAR
        cs = connection.prepareCall("{? = call myfuncout(?)}");
    
        // 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
    
      // Call a function with one IN/OUT parameter; the function returns a VARCHAR
        cs = connection.prepareCall("{? = call myfuncinout(?)}");
    
        // Register the types of the return value and OUT parameter
        cs.registerOutParameter(1, Types.VARCHAR);
        cs.registerOutParameter(2, Types.VARCHAR);
    
        // Set the value for the IN/OUT parameter
        cs.setString(2, "a string");
    
        // Execute and retrieve the returned values
        cs.execute();
        retValue = cs.getString(1);           // return value
        outParam = cs.getString(2);           // IN/OUT parameter
    } catch (SQLException e) {
    }

    CALL CURSOR:

    For Oracle stored procedure returns CURSOR parameter, you can

    1、Registered via JDBC CallableStatement.registerOutParameter(index,OracleTypes.CURSOR).

    2、Get it back via callableStatement.getObject(index).

    CODE:

     1 //getDBUSERCursor is a stored procedure
     2 String getDBUSERCursorSql = "{call getDBUSERCursor(?,?)}";
     3 callableStatement = dbConnection.prepareCall(getDBUSERCursorSql);
     4 callableStatement.setString(1, "mkyong");
     5 callableStatement.registerOutParameter(2, OracleTypes.CURSOR);
     6  
     7 // execute getDBUSERCursor store procedure
     8 callableStatement.executeUpdate();
     9  
    10 // get cursor and cast it to ResultSet
    11 rs = (ResultSet) callableStatement.getObject(2);
    12  
    13 // loop it like normal
    14 while (rs.next()) {
    15     String userid = rs.getString("USER_ID");
    16     String userName = rs.getString("USERNAME");
    17 }

     

  • 相关阅读:
    xml和json笔记
    Ajax开发技术介绍与实战练习
    MATLAB学习(4)——min
    MATLAB学习(2)——zeros
    MATLAB学习(1)——ordfilt2
    vim的基本命令
    VS2015 闪退问题
    Error (10028): Can't resolve multiple constant drivers for net "mydata[14]" at sd_read.v(207)
    自动识别设备
    Internal Error: Sub-system: CUT, File: /quartus/db/cut/cut_post_syn_util.cpp, Line: 709 name_to_atom_map[iname] == 0
  • 原文地址:https://www.cnblogs.com/caroline/p/2450181.html
Copyright © 2020-2023  润新知