JDBC Tutorials - Herong's Tutorial Notes
Dr. Herong Yang, Version 2.11

getProcedures() - Listing Stored Procedures

This section describes how to get a list of stored procedures in the database server.

If you want to get a list of stored procedures through the JDBC interface, you can use the getProcedures() method on the DatabaseMetaData object as shown in the program program below:

/**
 * MySqlCallGetProcedures.java
 * Copyright (c) 2007 by Dr. Herong Yang. All rights reserved.
 */
import java.sql.*;
public class MySqlCallGetProcedures {
  public static void main(String [] args) {
    Connection con = null;
    try {
      com.mysql.jdbc.jdbc2.optional.MysqlDataSource ds 
        = new com.mysql.jdbc.jdbc2.optional.MysqlDataSource();
      ds.setServerName("localhost");
      ds.setPortNumber(3306);
      ds.setDatabaseName("HerongDB");
      ds.setUser("Herong");
      ds.setPassword("TopSecret");
      con = ds.getConnection();
      DatabaseMetaData meta = con.getMetaData();

// Listing all stored procedures
      ResultSet res = meta.getProcedures(null, null, "%");
      System.out.println("Stored procedures:"); 
      while (res.next()) {
        System.out.println(
          "   "+res.getString("PROCEDURE_CAT")
          + ", "+res.getString("PROCEDURE_SCHEM")
          + ", "+res.getString("PROCEDURE_NAME"));
      }
      res.close();
      
// Listing all tables
      res = meta.getTables(null, null, "%", null);
      System.out.println("Stored tables:"); 
      while (res.next()) {
        System.out.println(
          "   "+res.getString("TABLE_CAT")
          + ", "+res.getString("TABLE_SCHEM")
          + ", "+res.getString("TABLE_NAME"));
      }
      res.close();

      con.close();
    } catch (Exception e) {
      System.err.println("Exception: "+e.getMessage());
      e.printStackTrace();
    }
  }
}

But the output was a surprise to me:

C:\>javac -cp .;\local\lib\mysql-connector-java-5.0.7-bin.jar
  MySqlCallGetProcedures.java

C:\>java -cp .;\local\lib\mysql-connector-java-5.0.7-bin.jar
  MySqlCallGetProcedures

Stored procedures:
Stored tables:
   HerongDB, null, profile

getProcedures() did not return any stored procedure names. This could be a bug in the MySQL JDBC driver (MySQL Connector/J 5.0.7).

Sections in This Chapter

Overview of CallableStatement Objects

"CREATE PROCEDURE" - Creating a Simple Procedure

Creating Procedures with IN and OUT Parameters

Creating Procedures with INOUT Parameters

Creating Procedures with Multiple Queries

Creating CallableStatement Objects with prepareCall()

Capturing ResultSet with executeQuery()

Creating CallableStatement Objects with Parameters

Common Errors with CallableStatement Parameters

Creating CallableStatement Objects with INOUT Parameters

Retrieving Multiple ResultSet Objects

Executing Stored Procedures without Permission

getProcedures() - Listing Stored Procedures

Dr. Herong Yang, updated in 2007
getProcedures() - Listing Stored Procedures