---
title: OceanBase 数据库 V4.x 版本子查询带有窗口函数时执行报错 -4016 的原因和解决方法-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于OceanBase 数据库 V4.x 版本子查询带有窗口函数时执行报错 -4016 的原因和解决方法相关的常见问题和使用技巧，帮助您快速解决OceanBase 数据库 V4.x 版本子查询带有窗口函数时执行报错 -4016 的原因和解决方法的难题。
---
切换语言

- 简体中文
- English

划线反馈

# OceanBase 数据库 V4.x 版本子查询带有窗口函数时执行报错 -4016 的原因和解决方法

更新时间：2026-05-19 08:21

适用版本： V4.0.x、V4.1.x、V4.2.x、V4.3.x 内容类型：Troubleshoot  

## 问题现象

子查询带有窗口函数，执行时报错 -4016

关键日志含有 `failed to set sharable expr(ret=-4016` 信息，完整日志如下。

```shell
[2024-11-20 18:07:12.648742] WDIAG [SQL.RESV] set_sharable_expr_reference (ob_dml_stmt.cpp:1893) [1862910][T1052_L0_G0][T1052][xxxxx-xxxxx-xxxxx-xxxxx] [lt=85][errcode=-4016] failed to set sharable expr(ret=-4016, expr={item_type:"T_OP_EXISTS", result_type:{meta:{type:"INT", collation:"binary", coercibility:"NUMERIC"}, accuracy:{length:-1, precision:1, scale:0}, flag:1, calc_type:{type:"NULL", collation:"invalid_type", coercibility:"INVALID"}}, expr_info:["CNT_COLUMN", "CNT_SUB_QUERY"], rel_id:[1], children:[{item_type:"T_REF_QUERY", result_type:{meta:{type:"BIGINT", collation:"binary", coercibility:"NUMERIC"}, accuracy:{length:-1, precision:-1, scale:-1}, flag:0, calc_type:{type:"NULL", collation:"invalid_type", coercibility:"INVALID"}}, expr_info:["IS_SUB_QUERY", "CNT_COLUMN", "CNT_SUB_QUERY"], rel_id:[1], id:0, output_column:1, is_set:true, is_cursor:false, is_multiset:false, column_types:[{meta:{type:"NUMBER", collation:"binary", coercibility:"NUMERIC"}, accuracy:{length:1, precision:-1, scale:-85}, flag:1, calc_type:{type:"NULL", collation:"invalid_type", coercibility:"INVALID"}}], enum_set_values:[], children:[{item_type:"T_QUESTIONMARK", result_type:{meta:{type:"VARCHAR2", collation:"utf8mb4_bin", coercibility:"IMPLICIT"}, accuracy:{length:38, precision:2, scale:-1}, flag:0, calc_type:{type:"NULL", collation:"invalid_type", coercibility:"INVALID"}}, expr_info:["IS_CONST", "IS_DYNAMIC_PARAM", "CNT_CONST", "CNT_DYNAMIC_PARAM"], value:{"UNKNOWN":-1}, outer_expr:{item_type:"T_REF_COLUMN", result_type:{meta:{type:"VARCHAR2", collation:"utf8mb4_bin", coercibility:"IMPLICIT"}, accuracy:{length:38, precision:2, scale:-1}, flag:0, calc_type:{type:"NULL", collation:"invalid_type", coercibility:"INVALID"}}, expr_info:["IS_COLUMN", "CNT_COLUMN"], rel_id:[1], table_id:18446744073709551609, column_id:21, database_name:"PZK", table_name:"C", synonym_name:"", synonym_db_name:"", column_name:"VOUCHER_ID", column_flags:34359738368, enum_set_values:[], is_lob_column:false, is_joined_dup_column:false, is_unpivot_mocked_column:false, is_hidden:false, from_alias_table:true, is_rowkey_column:false, is_unique_key_column:false, is_mul_key_column:true, is_strict_json_column:0, srs_id:18446744073709551615, udt_set_id:0}, is_onetime:false}]}]})

```

## 问题原因

对子查询中窗口函数的改写存在缺陷，导致报错 -4016。

## 问题的风险及影响

SQL 执行失败报错。

## 影响租户

影响 OceanBase 数据库中的 SYS 租户和 Oracle 租户以及 MySQL 租户。

## 适用版本

OceanBase 数据库 V4.x 版本。

## 解决方法及规避方式

- 解决方法：

  升级至问题已修复版本。目前已修复的版本包括 OceanBase 数据库 V4.2.1 BP5（oceanbase-4.2.1.5-105000072024041817）及之后版本。
 - 规避方式：

  在查询中添加 hint `/*+no_win_magic*/` 规避。

Previous

[OceanBase 数据库 V3.x 版本中 Oracle 租户执行包含 regexp_replace 复杂表达式时 SQL 报错 -4013 的原因和解决方法](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000001962270)

Next

[使用 SELECT 语句调用 UDF 且 UDF 中存在 UPDATE 导致报错 -4007](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000005908757) ![有帮助](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) 咨询热线
