diff --git a/src/pl/ob_pl.cpp b/src/pl/ob_pl.cpp index 52f35c4493..131e135b9c 100644 --- a/src/pl/ob_pl.cpp +++ b/src/pl/ob_pl.cpp @@ -2664,8 +2664,7 @@ do { \ get_params().at(i))); } else if (pl_type.is_obj_type() // 复杂类型不需要做类型转换(不支持复杂类型的转换), 直接赋值 && (params->at(i).get_meta() != get_params().at(i).get_meta() - || params->at(i).get_accuracy() != get_params().at(i).get_accuracy()) - && !func_.is_function()) { + || params->at(i).get_accuracy() != get_params().at(i).get_accuracy())) { if (params->at(i).is_null() || (lib::is_oracle_mode() && params->at(i).is_null_oracle())) { ObObjMeta null_meta = get_params().at(i).get_meta(); diff --git a/src/pl/ob_pl.h b/src/pl/ob_pl.h index 6e6fd5c46e..8118f786df 100644 --- a/src/pl/ob_pl.h +++ b/src/pl/ob_pl.h @@ -387,7 +387,13 @@ class ObPLSqlStmt; class ObPLSqlInfo { public: - ObPLSqlInfo() {} + ObPLSqlInfo() + : loc_(0), forall_sql_(false), for_update_(false), has_hidden_rowid_(false), + sql_(), params_(), array_binding_params_(), ps_sql_(), + stmt_type_(sql::stmt::StmtType::T_NONE), rowid_table_id_(OB_INVALID_ID), + into_(), not_null_flags_(), pl_integer_ranges_(), + data_type_(), bulk_(false), allocator_(nullptr) {} + ObPLSqlInfo(common::ObIAllocator &allocator) : loc_(0), forall_sql_(false), for_update_(false), has_hidden_rowid_(false), sql_(), params_(allocator), array_binding_params_(allocator), ps_sql_(),