Sql server DatabaseMetaData GetProcedureClumns存储过程列名顺序?
我使用databasemetadata获取SQL server上存储过程的列(读取参数):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>
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_存储过程列
,其说明“返回的结果按过程限定符、过程所有者、过程名称以及参数在过程定义中的显示顺序排序。”