2

Informixでストアドプロシージャのパラメータ(関数宣言)を見つけるにはどうすればよいですか?「{callsp_csq_activity}」または「{callsp_csq_activity(?、?..)}」とそのタイプ?また、この保存された関数の定義リストはありますか?これらの関数を使用して、db内のテーブルの列を取得するにはどうすればよいですか?

public void callSP() throws SQLException {

        CallableStatement proc = null;

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

    }
4

2 に答える 2

3

これを使って :select * from sysprocedures

この投稿で説明されているように:Informixのすべてのストアドプロシージャを一覧表示するにはどうすればよいですか?

于 2012-05-17T13:51:18.520 に答える
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);
        }


    }

}

SQLデータ型の値については、定数フィールド値のjava.sql.Typesセクションを確認してください。

于 2017-07-06T10:38:20.837 に答える