我使用的DatabaseMetaData获得SQL服务器上的存储过程的列(读参数):DatabaseMetaData getProcedureColumns存储过程列名称的顺序?
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();
}
是否getProcedureColumns()
有序的方式返回程序列?意思是如果在数据库中存储过程参数是-abc(@a int,@b int,@c int)
,我是否总是按顺序获得@a, @b and @c
?
如果是,是否有任何文档建议相同?
此外,SQLServerDatabaseMetaData#getProcedureColumns源代码显示它调用SQL Server系统存储过程'sp_sproc_columns',其[documentation](https://docs.microsoft.com/en-us/sql/relational- database/system-stored-procedures/sp-sproc-columns-transact-sql)表示:“返回的结果由PROCEDURE_QUALIFIER,PROCEDURE_OWNER,PROCEDURE_NAME排序,以及参数在过程定义中出现的顺序。” –