---
title: package 复杂变量序列化结果不正确-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于package 复杂变量序列化结果不正确相关的常见问题和使用技巧，帮助您快速解决package 复杂变量序列化结果不正确的难题。
---
切换语言

- 简体中文
- English

划线反馈

# package 复杂变量序列化结果不正确

更新时间：2026-05-29 08:46

适用版本： V3.2.x 内容类型：Troubleshoot  

## 问题现象

执行的一条 SQL 语句中包含了 UDF，UDF 内部会访问 package 中的复杂类型变量，直连不同机器时，查询返回的结果集不一致。

## 问题原因

当 OceanBase 数据库在执行一条包含 UDF 的 SQL 语句时，如果 UDF 内部修改了 package 变量，package 变量会缓存在当前会话上。分布式计划下，远端算子有访问会话上 package 变量的需求，因此在实现上会在发送远端算子的同时向远端同步 package 变量。在远端变量的同步上采用的策略是先将变量序列化为 `hex` 值，在远端再将 `hex` 值反序列化。这里对于复杂一些的变量序列化与反序列化逻辑不正确，造成的结果是远端看到的 package 复杂类型变量是不正确的值。

## 问题的风险及影响

package 变量值无法正确的序列化到远端，会出现正确性问题。

#### 注意

该问题仅在 Oracle 租户下出现。

## 影响版本

OceanBase 数据库 V3.2.3 BP10（oceanbase-3.2.3.3-110000092023091219）版本。

## 解决方法及规避方式

- 将 package 的 `collect(record)` 类型变量拆解成多个 `collection(basic)` 变量，同步改造业务的 PL 或 SQL 代码。
 - 升级到问题已修复版本。

Previous

[OceanBase 数据库中 CALL PL报错 prepare sql is not a string(result={"NULL":"NULL"}, ret=-4016 的原因和解决方法](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000001853650)

Next

[执行 PL 报错 ORA-20100: XXXXX：插入 TABLE123 失败! SQLCODE=-4374 的原因及处理方法](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000002397948) ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
