diff --git a/src/sql/ob_spi.cpp b/src/sql/ob_spi.cpp index fb8a746fb1..2a35eff49d 100644 --- a/src/sql/ob_spi.cpp +++ b/src/sql/ob_spi.cpp @@ -903,11 +903,14 @@ int ObSPIService::spi_calc_expr(ObPLExecCtx *ctx, if (OB_INVALID_INDEX != result_idx) { ObObjParam ¶m = ctx->params_->at(result_idx); bool is_ref_cursor = param.is_ref_cursor_type(); + ObAccuracy invalid_accuracy; if (!result->is_ext()) { bool has_lob_header = result->ObObj::has_lob_header(); if (param.get_meta().get_scale() != SCALE_UNKNOWN_YET) { result->ObObj::set_scale(param.get_meta().get_scale()); result->set_accuracy(ctx->params_->at(result_idx).get_accuracy()); + } else if (result->get_accuracy() == invalid_accuracy) { + result->set_accuracy(ctx->params_->at(result_idx).get_accuracy()); } if (has_lob_header) { result->ObObj::set_has_lob_header();