Sql server DatabaseMetaData GetProcedureClumns存储过程列名顺序?

Sql server DatabaseMetaData GetProcedureClumns存储过程列名顺序?,sql-server,jdbc,mssql-jdbc,callable-statement,database-metadata,Sql Server,Jdbc,Mssql Jdbc,Callable Statement,Database Metadata,我使用databasemetadata获取SQL server上存储过程的列(读取参数): Connection connection = getConnection(); //getting the connection - DatabaseMetaData dbMetaData = connection.getMetaData(); HashMap<String, Integer> paramInfo = new HashMap<String, Integer>

我使用databasemetadata获取SQL server上存储过程的列(读取参数):

Connection connection = getConnection(); //getting the connection -   
DatabaseMetaData dbMetaData = connection.getMetaData();

HashMap<String, Integer> paramInfo = new HashMap<String, Integer>();
if (dbMetaData != null){
    ResultSet rs = dbMetaData.getProcedureColumns (null, null, sp_name.toUpperCase(), "%");
    while (rs.next())
        paramInfo.put(rs.getString(4), rs.getInt(6));
    rs.close();
}
Connection-Connection=getConnection()//获取连接-
DatabaseMetaData dbMetaData=connection.getMetaData();
HashMap paramInfo=新HashMap();
if(dbMetaData!=null){
ResultSet rs=dbMetaData.getProcedureClumns(null,null,sp_name.toUpperCase(),“%”;
while(rs.next())
paramInfo.put(rs.getString(4),rs.getInt(6));
rs.close();
}
getprocedureclumns()
是否按顺序返回过程列?这意味着,如果数据库中的存储过程参数是-
abc(@a int、@b int、@c int)
,我是否总是以有序的方式获得
@a、@b和@c


如果是,是否有任何文档提供相同的建议?

所有JDBC驱动程序都需要遵循JDBC规范和API文档,并且的API文档指定:

检索给定目录存储过程的描述 参数和结果列

仅与架构、过程和参数名称匹配的描述 返回条件。它们是按
程序\u CAT
订购的,
PROCEDURE\u SCHEM
PROCEDURE\u NAME
特定\u NAME
。在这里面,, 返回值(如果有)为第一个。接下来是参数 呼叫顺序中的描述。列描述在列中 数字顺序

如果驱动程序不遵循此规范,那么这就是驱动程序中的错误。所以一般来说,你应该能够依赖上面的描述


否则,检查指定类型(参数、结果集列等)的列
COLUMN_TYPE
(索引5)和描述位置的
ORDINAL_POSITION
(索引18)中的值(检查javadoc中的详细信息)。

此外,
SQLServerDatabaseMetaData#getprocedureclumns
源代码显示它调用了SQL Server系统存储过程
sp_存储过程列
,其说明“返回的结果按过程限定符、过程所有者、过程名称以及参数在过程定义中的显示顺序排序。”