---
title: "OceanBase 数据库中 CALL PL报错 prepare sql is not a string(result={&quot;NULL&quot;:&quot;NULL&quot;}, ret=-4016 的原因和解决方法-OceanBase数据库使用指南"
description: "了解OceanBase数据库在实际应用中关于OceanBase 数据库中 CALL PL报错 prepare sql is not a string(result={&quot;NULL&quot;:&quot;NULL&quot;}, ret=-4016 的原因和解决方法相关的常见问题和使用技巧，帮助您快速解决OceanBase 数据库中 CALL PL报错 prepare sql is not a string(result={&quot;NULL&quot;:&quot;NULL&quot;}, ret=-4016 的原因和解决方法的难题。"
---
切换语言

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

划线反馈

# OceanBase 数据库中 CALL PL报错 prepare sql is not a string(result={"NULL":"NULL"}, ret=-4016 的原因和解决方法

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

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

## 问题现象

OceanBase 数据库中 CALL PL 报错 `prepare sql is not a string(result={"NULL":"NULL"}, ret=-4016)`。

**关键日志信息：**

```shell
[2024-09-23 15:27:27.721604] WARN  [SQL.ENG] execute (ob_prepare_executor.cpp:76) [763646][0][xxxxx-xxxxx-xxxxx-xxxxx] [lt=10] [dc=0] prepare sql is not a string(result={"NULL":"NULL"}, ret=-4016)

```

**部分 PL 脚本：**

```shell
-- 检查入库信息
SET V_SQL =CONCAT('
 SELECT COUNT(*) INTO @V_CNT_G FROM (
 SELECT CNT from (SELECT 1 CNT FROM TEMP_SR_ZYTB_TOZQ_EXCEL_BF_SRDD WHERE ACCTE_DATE=''',V_ACCTE_DATE,''' LIMIT 1) A
 UNION ALL
 SELECT CNT from (SELECT 1 CNT FROM DWD_D_PRD_CB_USER_QX WHERE month_id=''',V_MONTH,''' and day_id=''',V_DAY,''' LIMIT 1)B
 UNION ALL
 SELECT CNT from (SELECT 1 CNT FROM DIM_D_RES_CARD_OFFICE WHERE month_id=''',V_MONTH_HD,''' and day_id=''',V_DAY_HD,''' LIMIT 1)c) t');
 select V_SQL;
 set @sql = V_SQL;
 PREPARE stmt FROM @sql;
 EXECUTE stmt; -- 执行SQL语句
 select concat('@V_CNT_G=',@V_CNT_G);
 DEALLOCATE PREPARE stmt;

```

**SQL_AUDIT 记录：**

```shell
MySQL [oceanbase]> SELECT * FROM v$SQL_AUDIT WHERE QUERY_SQL LIKE '%CALL XXxxx%' ORDER BY REQUEST_TIME DESC;

```

输出结果如下：

```shell
+----------------+----------+------------+-------------+-----------------------------------+------------+----------------+-------------+-----------+-------------+---------------------+------------------+-----------+------------+----------------+----------------------+---------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------+---------------+-------------+---------------+----------+-------+--------+--------+-----------+----------------------+--------+------+--------+------+--------+----+-------+---------------+-------------+------------+--------------------+-----------------+-----------------------+-------------+-----------+-----------+--------------+-----------------+-------------+------------------+--------------+----------+---------------+------------+-------------+---------------+--------------+-----------------------+-----------------------+-------------------+---------------+---------------+------------------------+-----------------+-----------------------+------------+-----------+------------+-------------------+-------------------------+------------------------+---------------------+-----------------------+-------------------+------------+--------------------+-------------------+------------------+---------------------+--------------+-----------------------+---------------+-----------+--------------------+-----------------------+--------------+
| SVR_IP         | SVR_PORT | REQUEST_ID | SQL_EXEC_ID | TRACE_ID                          | SID        | CLIENT_IP      | CLIENT_PORT | TENANT_ID | TENANT_NAME | EFFECTIVE_TENANT_ID | USER_ID          | USER_NAME | USER_GROUP | USER_CLIENT_IP | DB_ID                | DB_NAME | SQL_ID                           | QUERY_SQL                                                                                                                                                                                             | PLAN_ID | AFFECTED_ROWS | RETURN_ROWS | PARTITION_CNT | RET_CODE | QC_ID | DFO_ID | SQC_ID | WORKER_ID | EVENT                | P1TEXT | P1   | P2TEXT | P2   | P3TEXT | P3 | LEVEL | WAIT_CLASS_ID | WAIT_CLASS# | WAIT_CLASS | STATE              | WAIT_TIME_MICRO | TOTAL_WAIT_TIME_MICRO | TOTAL_WAITS | RPC_COUNT | PLAN_TYPE | IS_INNER_SQL | IS_EXECUTOR_RPC | IS_HIT_PLAN | REQUEST_TIME     | ELAPSED_TIME | NET_TIME | NET_WAIT_TIME | QUEUE_TIME | DECODE_TIME | GET_PLAN_TIME | EXECUTE_TIME | APPLICATION_WAIT_TIME | CONCURRENCY_WAIT_TIME | USER_IO_WAIT_TIME | SCHEDULE_TIME | ROW_CACHE_HIT | BLOOM_FILTER_CACHE_HIT | BLOCK_CACHE_HIT | BLOCK_INDEX_CACHE_HIT | DISK_READS | RETRY_CNT | TABLE_SCAN | CONSISTENCY_LEVEL | MEMSTORE_READ_ROW_COUNT | SSSTORE_READ_ROW_COUNT | REQUEST_MEMORY_USED | EXPECTED_WORKER_COUNT | USED_WORKER_COUNT | SCHED_INFO | FUSE_ROW_CACHE_HIT | PS_CLIENT_STMT_ID | PS_INNER_STMT_ID | TRANSACTION_HASH    | REQUEST_TYPE | IS_BATCHED_MULTI_STMT | OB_TRACE_INFO | PLAN_HASH | LOCK_FOR_READ_TIME | WAIT_TRX_MIGRATE_TIME | PARAMS_VALUE |
+----------------+----------+------------+-------------+-----------------------------------+------------+----------------+-------------+-----------+-------------+---------------------+------------------+-----------+------------+----------------+----------------------+---------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------+---------------+-------------+---------------+----------+-------+--------+--------+-----------+----------------------+--------+------+--------+------+--------+----+-------+---------------+-------------+------------+--------------------+-----------------+-----------------------+-------------+-----------+-----------+--------------+-----------------+-------------+------------------+--------------+----------+---------------+------------+-------------+---------------+--------------+-----------------------+-----------------------+-------------------+---------------+---------------+------------------------+-----------------+-----------------------+------------+-----------+------------+-------------------+-------------------------+------------------------+---------------------+-----------------------+-------------------+------------+--------------------+-------------------+------------------+---------------------+--------------+-----------------------+---------------+-----------+--------------------+-----------------------+--------------+
| 10.*.*.194     |     2882 | 1217533192 |  1295693050 | YB420AAC92C2-00060F66BC0E519F-0-0 | 3224454907 | 10.xxx.xxx.164 |       43468 |      1001 | zbxxx_ob_bs |                1001 | 1100611139404777 | zb_xxx    |          0 | 10.xxx.xxx.164 | 18446744073709551615 |         | BFAF69D317E0330CB3F31386062114E9 | select * from v$sql_audit where query_sql like '%CALL zb_fqz.XXXXXXXXXXXXXXXXXXXXXXXXXX(20240923, 20240922, ?, ?)%' order by request_time desc                                                        |       0 |             0 |           0 |             0 |    -5134 |     0 |      0 |      0 |         0 | system internal wait |        |    0 |        |    0 |        |  0 |     0 |           100 |           0 | OTHER      | MAX_WAIT TIME ZERO |               0 |                     0 |           0 |         0 |         0 |            0 |               0 |           0 | 1727083223446003 |          511 |        0 |             0 |         23 |           0 |           432 |           39 |                     0 |                     0 |                 0 |             0 |             0 |                      0 |               0 |                     0 |          0 |         0 |          0 |                -1 |                       0 |                      0 |             2096128 |                     0 |                 0 | NULL       |                  0 |                -1 |               -1 |                   0 |            2 |                     0 | NULL          |         0 |                  0 |                     0 |              |
| 10.*.*.194     |     2882 | 1217527289 |  1295542529 | YB420AAC92C2-00060F66D7DD65FE-0-0 | 3224563175 | 10.xxx.xxx.164 |       54014 |      1001 | zbxxx_ob_bs |                1001 | 1100611139404777 | zb_xxx    |          0 | 10.xxx.xxx.87  |     1100611139404827 | zb_fqz  | 7AA1E104BDEC0E1CD9CB0F35BB4EBB24 | /* ApplicationName=DBeaver 24.0.2 - SQLEditor <Script-205.sql> */ CALL zb_fqz.XXXXXXXXXXXXXXXXXXXXXXXXXX(20240923, 20240922, @com_mysql_jdbc_outparam_V_RETCODE, @com_mysql_jdbc_outparam_V_RETINFO)  |       0 |             0 |           0 |             0 |    -4016 |     0 |      0 |      0 |         0 | sync rpc             | pcode  | 1308 | size   | 1712 |        |  0 |     0 |           107 |           7 | NETWORK    | WAITED KNOWN TIME  |         1350622 |               1380151 |          19 |        21 |         0 |            0 |               0 |           0 | 1727076445896384 |      1825862 |        0 |             0 |         32 |           2 |           661 |      1825144 |                     0 |                     0 |                 0 |             0 |             0 |                      0 |               0 |                     0 |          0 |         3 |          0 |                -1 |                       0 |                      0 |             4192256 |                     0 |                 0 | NULL       |                  0 |                -1 |               -1 | 1097682378722222551 |            2 |                     0 | NULL          |         0 |                  0 |                     0 |              |
+----------------+----------+------------+-------------+-----------------------------------+------------+----------------+-------------+-----------+-------------+---------------------+------------------+-----------+------------+----------------+----------------------+---------+----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------+---------------+-------------+---------------+----------+-------+--------+--------+-----------+----------------------+--------+------+--------+------+--------+----+-------+---------------+-------------+------------+--------------------+-----------------+-----------------------+-------------+-----------+-----------+--------------+-----------------+-------------+------------------+--------------+----------+---------------+------------+-------------+---------------+--------------+-----------------------+-----------------------+-------------------+---------------+---------------+------------------------+-----------------+-----------------------+------------+-----------+------------+-------------------+-------------------------+------------------------+---------------------+-----------------------+-------------------+------------+--------------------+-------------------+------------------+---------------------+--------------+-----------------------+---------------+-----------+--------------------+-----------------------+--------------+

```

## 问题原因

原因为 PL 脚本里 V_SQL 写法不严谨，未保证结果不为 NULL，当其结果为 NULL 时，导致了 PL 执行失败，报错 `prepare sql is not a string`。

## 问题的风险及影响

PL 执行报错。

## 影响租户

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

## 适用版本

OceanBase 数据库 V3.x、V4.x 版本。

## 解决方法及规避方式

业务修改 PL 脚本。

上一篇

[OBServer 在编译含大量 SQL 语句的文本匿名块时 CPU 可能持续飙高且无法下降](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000443502)

下一篇

[package 复杂变量序列化结果不正确](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000443503) ![有帮助](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) 咨询热线
