---
title: 在 OceanBase 数据库 Oracle 模式下进行类型运算报 inconsistent datatypes-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于 在 OceanBase 数据库 Oracle 模式下进行类型运算报 inconsistent datatypes相关的常见问题和使用技巧，帮助您快速解决 在 OceanBase 数据库 Oracle 模式下进行类型运算报 inconsistent datatypes的难题。
---
切换语言

- 简体中文
- English

划线反馈

# 在 OceanBase 数据库 Oracle 模式下进行类型运算报 inconsistent datatypes

更新时间：2024-01-22 01:56

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

## 问题描述

在 Oracle 数据库中可以正常做类型运算，而在 OceanBase Oracle 模式中做类型运算时会报 `ora-00932 inconsistent datatypes` 错误。

OceanBase 数据库 Oracle 模式下做类型运算示列如下。

1. 创建测试表 t。

   ```shell
   CREATE TABLE t(c1 DATE);
   CREATE TABLE t3(c1 NUMBER);

   ```
 2. 执行存储过程验证类型运算。

   ```shell
   obclient >
   BEGIN
   SELECT MIN(c1) INTO fee1 FROM t;
   INSERT INTO t3 VALUES (fee1 - TO_DATE ('2020-01-01', 'yyyy-mm-dd'));
   END;
   /

   ```

   输出结果为。

   ```shell
   PL/SQL procedure successfully completed

   ```

OceanBase Oracle 模式下做类型运算示列如下。

   ```shell
   obclient >
   DCLARE
   fee1 DATE;
   fee2 NUMBER(14, 2);
   BEGIN
   SELECT MIN(c1) INTO fee1 FROM t;
   INSERT INTO t3 VALUES (fee1 - TO_DATE('2023-08-01', 'yyyy-mm-dd'));
   end;
   /

   ```

   输出结果如下。

   ```shell
   ORA-00932: inconsistent datatypes
   at anonymous block , line : 6, col : 3

   ```

## 问题原因

因为 OceanBase 数据库会用 fee1 的值做类型推导，如果值为 null，null-date 进行推导会报错。

## 解决方法

绕过的方法是在 fee1 上加显示的 cast，如 to_date（fee1）。

Previous

[MySQL 模式下时间类型间隔计算错误，错误代码 4016](https://www.oceanbase.com/knowledge-base/oceanbase-database-20000000156)

Next

[如何添加空间参考系统](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000003433850) ![有帮助](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) 咨询热线
