我使用的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排序,以及參數在過程定義中出現的順序。」 –