Compartir vía


Empleo de metadatos del parámetro

Descargar controlador JDBC

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.