---
title: PL 在 for loop cursor 中使用 goto 可能报错 -5589-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于PL 在 for loop cursor 中使用 goto 可能报错 -5589相关的常见问题和使用技巧，帮助您快速解决PL 在 for loop cursor 中使用 goto 可能报错 -5589的难题。
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

划线反馈

# PL 在 for loop cursor 中使用 goto 可能报错 -5589

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

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

## 问题现象

PL 在 for loop cursor 中使用 `goto` 可能报错 `-5589，Cursor is already open`。

## 问题原因

在 `for loop cursor` 中使用 `goto lable` 时，由于未自动关闭 cursor，循环下次进来时发现 cursor 已经打开，从而报错 `-5589`。

## 问题的风险及影响

风险较低，在 `for loop cursor` 中使用 `goto` 语句才会遇到。PL 报错 -5589。

## 影响租户

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

## 影响的版本

OceanBase 数据库 V2.2.77 GA（oceanbase-2.2.77-20210508211731）及之后版本、V3.1.2 GA（oceanbase-3.1.2-20210618150922）及之后版本、V3.2.3 GA（oceanbase-3.2.3.0-20220418212020）及之后版本。

## 解决方法及规避方式

- 解决方法：

  升级至问题已修复版本。目前已修复的版本包括 OceanBase 数据库 V2.2.77 BP13（oceanbase-2.2.77-113000052022082622）及之后版本、V3.1.2 BP10（oceanbase-3.1.2-110000022022092714）及之后版本、V3.2.3 BP6（oceanbase-3.2.3.3-106000102022111521）及之后版本。
 - 规避方式：

  根据具体使用场景可将 `goto` 语句替换为 `exit` 语句绕过。

上一篇

[Decode 函数中包含 UDF 时报 ORA-01476: divisor is equal to zero](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000209968)

下一篇

[SQL 执行正常，但 PL 里查无数据的问题](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000209960) ![有帮助](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) 咨询热线
