Empleo de metadatos del parámetro
Para hacer una consulta a un objeto SQLServerPreparedStatement o a SQLServerCallableStatement acerca de los parámetros que contienen, el controlador JDBC de Microsoft para SQL Server implementa la clase SQLServerParameterMetaData. Esta clase contiene numerosos campos y métodos que devuelven información en forma de un solo valor.
Para crear un objeto SQLServerParameterMetaData, puede usar los métodos getParameterMetaData de las clases SQLServerPreparedStatement y SQLServerCallableStatement.
En el siguiente ejemplo, una conexión abierta a la base de datos de ejemplo AdventureWorks2022 se pasa a la función, el método getParameterMetaData de la clase SQLServerCallableStatement se usa para devolver un objeto SQLServerParameterMetaData y luego se usan distintos métodos del objeto SQLServerParameterMetaData para mostrar información sobre el tipo y modo de los parámetros que se incluyen en el procedimiento almacenado HumanResources.uspUpdateEmployeeHireInfo.
public static void getParameterMetaData(Connection con) {
try(CallableStatement cstmt = con.prepareCall("{call HumanResources.uspUpdateEmployeeHireInfo(?, ?, ?, ?, ?)}");) {
ParameterMetaData pmd = cstmt.getParameterMetaData();
int count = pmd.getParameterCount();
for (int i = 1; i <= count; i++) {
System.out.println("TYPE: " + pmd.getParameterTypeName(i) + " MODE: " + pmd.getParameterMode(i));
}
}
// Handle any errors that may have occurred.
catch (SQLException e) {
e.printStackTrace();
}
}
Nota
Hay varias limitaciones a la hora de usar la clase SQLServerParameterMetaData con instrucciones preparadas.
Con Microsoft JDBC Driver 6.0 (o superior) para SQL Server: al usar SQL Server 2008 o 2008 R2, el controlador JDBC admite las instrucciones SELECT, DELETE, INSERT y UPDATE siempre y cuando estas no contengan subconsultas ni combinaciones.
Las consultas MERGE tampoco se admiten para la clase SQLServerParameterMetaData al usar SQL Server 2008 o 2008 R2. Para SQL Server 2012 y versiones superiores, se admiten metadatos de parámetros con consultas complejas.
No se admite la recuperación de metadatos de parámetros para columnas cifradas. Con Microsoft JDBC Driver 4.1 o 4.2 para SQL Server: el controlador JDBC admite las instrucciones SELECT, DELETE, INSERT y UPDATE siempre y cuando estas no contengan subconsultas ni combinaciones. Las consultas MERGE tampoco se admiten para la clase SQLServerParameterMetaData.