sql >> データベース >  >> RDS >> Oracle

SpringでSimpleJdbcCallを使用して行を返すOracleプロシージャを呼び出す

    これは、関数の呼び出しに使用するコードです:

    RowMapper<String> rm = new ParameterizedRowMapper<String>() {
        @Override
        public String mapRow(ResultSet rs, int rowNum) throws SQLException {
            return rs.getString(1);
        }
    };
    myStoredProcedure = new SimpleJdbcCall(DataSourceConnection.getDataSource())
            .withCatalogName("PACKAGE")
            .withFunctionName("GET_ALIAS")
            .returningResultSet("return", rm);
    
    MapSqlParameterSource params = new MapSqlParameterSource();
    params.addValue("P_ID",userStr);
    params.addValue("P_DOMAIN_ALIAS", domain[0]);
    List<String> list = myStoredProcedure.executeFunction(List.class,params);
    

    メタデータを使用できない場合のコードは次のとおりです:

    RowMapper<String> rm = new ParameterizedRowMapper<String>() {
        @Override
        public String mapRow(ResultSet rs, int rowNum) throws SQLException {
            return rs.getString(1);
        }
    };
    SqlParameter emailParam = new SqlParameter("P_ID", OracleTypes.VARCHAR);
    SqlParameter domainParam = new SqlParameter("P_DOMAIN_ALIAS", OracleTypes.VARCHAR);
    SqlOutParameter resultParam = new SqlOutParameter("return", OracleTypes.CURSOR);
    myStoredProcedure = new SimpleJdbcCall(DataSourceConnection.getDataSource())
            .withCatalogName("PACKAGE")
            .withFunctionName("GET_ALIAS")
            .withoutProcedureColumnMetaDataAccess()
            .returningResultSet("return", rm)
            .declareParameters(resultParam, emailParam, domainParam);
    
    MapSqlParameterSource params = new MapSqlParameterSource();
    params.addValue("P_ID",userStr);
    params.addValue("P_DOMAIN_ALIAS", domain[0]);
    List<String> list = myStoredProcedure.executeFunction(List.class,params);
    



    1. MySQLはwhere句を使用して外部結合を残しました-一致しない行を返します

    2. Javaを使用してMySQLデータベースをクエリする

    3. MacOSにMySQLをインストールする方法

    4. 複数のパラメーターと条件でSQLアイランドを検出する