您還可以使用DatabaseMetaData得到你想要的信息。
一個簡單的程序,獲取所有存儲過程和它們的參數是這樣的:
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
public class Main {
public static void main(String[] args) {
try {
Class.forName ("com.informix.jdbc.IfxDriver");
} catch (ClassNotFoundException e) {
System.out.println(e);
return;
}
try {
Connection conn = DriverManager.getConnection("jdbc:informix-sqli://.........");
ResultSet rsProcs;
DatabaseMetaData dbMeta = conn.getMetaData();
rsProcs = dbMeta.getProcedures(null, null, null);
while (rsProcs.next()) {
String procName = rsProcs.getString("PROCEDURE_NAME");
System.out.println(procName);
ResultSet rsParams = dbMeta.getProcedureColumns(null, null, procName, null);
while (rsParams.next()) {
System.out.println("Param " + rsParams.getString("ORDINAL_POSITION") + " :" +
" Name: " + rsParams.getString("COLUMN_NAME") +
" Type: " + rsParams.getString("COLUMN_TYPE") +
" Data Type: " + rsParams.getString("DATA_TYPE"));
}
System.out.println("");
rsParams.close();
}
rsProcs.close();
conn.close();
} catch (SQLException e) {
System.out.println(e);
}
}
}
檢查在Constant Field Values java.sql.Types中節的SQL數據類型值。
我讀過這篇文章,但它沒有給出任何參數列表只是過程體。我需要包含參數和返回值的函數聲明。 –
您是否已經檢查過sysprocedures和sysprocbody以及sysproccolumns,正如第一個答案中所解釋的那樣? –
這是我的錯。我忘了看看sysproccolumns。感謝您的幫助。 –