JDBC - 使用存储过程中的 OUT 参数



以下是示例,它使用了 CallableStatement 以及以下 **getStudentId()** MySQL 存储过程。此过程根据提供的 ID 返回下一个学生 ID。

确保您已在 TUTORIALSPOINT 数据库中创建此存储过程。您可以使用 MySQL Query Browser 来完成此操作。

DELIMITER $$

DROP PROCEDURE IF EXISTS `TUTORIALSPOINT`.`getStudentId` $$
CREATE PROCEDURE `TUTORIALSPOINT`.`getStudentId` 
   (INOUT STUDENT_ID INT)
BEGIN
   SET STUDENT_ID = STUDENT_ID + 1;
END $$

DELIMITER ;

此示例代码是基于前面章节中完成的环境和数据库设置编写的。

使用带 IN 参数的存储过程获取学生详细信息示例

在这个例子中,我们有四个静态字符串,包含数据库连接 URL、用户名、密码和一个调用存储过程并带有占位符的查询。现在使用 DriverManager.getConnection() 方法,我们准备了一个数据库连接。连接准备就绪后,我们使用 connection.prepareCall() 方法创建了一个 CallableStatement 对象。使用 CallableStatement.setInt(),我们设置了 INOUT 参数,并使用 CallableStatement.registerOutParameter(),我们准备了 OUT 变量来存储调用的存储过程的结果。

复制并粘贴以下示例到 JDBCStoredProcedureExample.java 中,编译并运行如下:

import java.sql.*;

// STORED PROCEDURE example having only IN parameter
public class JDBCStoredProcedureExample {

   static final String DB_URL = "jdbc:mysql://127.0.0.1/TUTORIALSPOINT";
   static final String USER = "guest";
   static final String PASS = "guest123";
   static final String QUERY = "{call getStudentId(?)}";

   public static void main(String args[]) {

      Connection conn = null;
      CallableStatement cstmt = null;
      try{
         conn = DriverManager.getConnection(DB_URL,USER,PASS);
         System.out.println("Connection to db  established.");

         cstmt = conn.prepareCall(QUERY);
         cstmt.setInt(1, 1000);
		 cstmt.registerOutParameter(1, java.sql.Types.INTEGER);

         System.out.println("Executing stored procedure..." );
         cstmt.execute();
         
         // Display updated student id
         System.out.println(cstmt.getInt(1));
         cstmt.close();
         conn.close();
      }catch(SQLException sqle){
         sqle.printStackTrace();
      }        
   }
}

输出

现在让我们编译上面的示例,如下所示:

C:\>javac JDBCStoredProcedureExample.java
C:\>

运行 **JDBCStoredProcedureExample** 时,会产生以下结果:

C:\>java JDBCStoredProcedureExample
Connection to db  established.
Executing stored procedure...
StudentID: 1000
1001

C:\>
jdbc-stored-procedure.htm
广告