2012-05-17 94 views
1

如何在Informix中查找存儲過程的參數(函數聲明)? 是否「{call sp_csq_activity}」或「{call sp_csq_activity(?,?..)}」及其類型?還有這個存儲函數的定義列表嗎?我如何使用這些函數來檢索數據庫中的表的任何列?Informix:在Java中使用存儲過程

public void callSP() throws SQLException { 

     CallableStatement proc = null; 

     proc = conn.prepareCall("{ call sp_csq_activity }"); 
     proc.execute(); 

    } 

回答

2

使用此:select * from sysprocedures

正如這篇文章解釋說:How do I list all stored procedures in Informix?

+0

我讀過這篇文章,但它沒有給出任何參數列表只是過程體。我需要包含參數和返回值的函數聲明。 –

+0

您是否已經檢查過sysprocedures和sysprocbody以及sysproccolumns,正如第一個答案中所解釋的那樣? –

+0

這是我的錯。我忘了看看sysproccolumns。感謝您的幫助。 –

0

您還可以使用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數據類型值。