2

如何在 Informix 中找到存储过程的参数(函数声明)?是“{ call sp_csq_activity }”还是“{ call sp_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 回答