---
title: "OBClient Oracle 模式支持 - 命令行客户端 V2.2.13 | OceanBase 文档中心"
description: OBClient Oracle 模式支持 OBClient 支持连接 OceanBase 数据库的 Oracle 模式租户，并提供以下 Oracle 模式特定功能。 概述 OBClient 在连接 Oracle 模式租户时，会自动识别 Oracle 语法特性，包括： 使用 / 作为语句分隔符（在 PL/SQL 块中）…
image: https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*OSPzQ6GUQF4AAAAAQHAAAAgAeiGDAQ/original
---
切换语言

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

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*1DGSQqsgFKcAAAAARrAAAAgAeiGDAQ/original) 命令行客户端V 2.2.13

# OBClient Oracle 模式支持

更新时间：2026-06-30 18:11:26

[编辑](https://github.com/oceanbase/obclient/edit/V2.2.13/zh-CN/600.advanced-features/200.obclient-oracle-mode-support.md)  

OBClient 支持连接 OceanBase 数据库的 Oracle 模式租户，并提供以下 Oracle 模式特定功能。

## 概述

OBClient 在连接 Oracle 模式租户时，会自动识别 Oracle 语法特性，包括：

- 使用 `/` 作为语句分隔符（在 PL/SQL 块中）
 - Oracle 风格的字符串和日期格式
 - Oracle 系统函数和包
 - PL/SQL 语法支持

## DBMS_OUTPUT 支持

OBClient 支持 Oracle 的 `DBMS_OUTPUT` 包，可以在客户端显示存储过程中的输出信息。请使用 `SET SERVEROUTPUT` 命令控制是否在查询后拉取并显示 `DBMS_OUTPUT` 输出：

```sql
SET SERVEROUTPUT ON;
SET SERVEROUTPUT OFF;

```

## conn 命令（Oracle 兼容）

OBClient 兼容 Oracle SQL*Plus 的 `conn` 命令，用于切换连接。

### 语法

```sql
conn [username[/password][@connect_identifier]];

```

### 使用示例

#### 同租户切换连接

切换到同一租户下的另一个数据库：

```sql
obclient> conn tom@oboraclegbk#obcluster421/tom;

```

#### 跨租户切换连接

切换到另一个租户：

```sql
obclient> conn SYS@oboracle#obcluster421/WElcome12#_;

```

#### SQL*Plus 兼容格式

使用 SQL*Plus 兼容的格式：

```sql
obclient> conn tom/tom;

```

### 说明

`conn` 命令是 `connect` 命令的别名，完全兼容 Oracle SQL*Plus 的语法。使用 `conn` 命令会断开当前连接并建立新连接。

## define 命令

`define` 命令用于定义用户变量，兼容 Oracle SQL*Plus 的变量替换功能。

### 语法

```sql
DEFINE [variable] [= value]

```

### 功能说明

- 定义（命名）一个替代变量并为其分配一个 CHAR 值
 - 输入 `DEFINE` 后跟变量名以列出变量的值和类型
 - 输入不带参数的 `DEFINE` 来列出所有替换变量的值和类型

### 使用示例

```sql
obclient> DEFINE name = 'Alice';
obclient> SELECT 'Hello, &name' FROM dual;
Hello, Alice

obclient> DEFINE name
DEFINE NAME = "Alice" (CHAR)

obclient> DEFINE
DEFINE _DATE = "2024-01-01" (CHAR)
DEFINE NAME = "Alice" (CHAR)

```

### 与 SET DEFINE 配合使用

`define` 命令与 `SET DEFINE` 命令配合使用，可以控制变量替换的行为。请参阅 [SET 变量](https://www.oceanbase.com/docs/common-obclient-doc-cn-1000000006361918) 了解 `SET DEFINE` 的详细说明。

## /(slash) 分隔符

OBClient 支持使用 `/` 作为语句分隔符，特别是在执行 PL/SQL 块时。

### 功能说明

- 执行最近执行的 SQL 命令或存储在 SQL 缓冲区中的 PL/SQL 块
 - 斜杠命令的功能类似于 `RUN`，但不列出命令
 - 使用斜杠命令执行 SQL 命令或 PL/SQL 块不会导致 SQL 缓冲区中的当前行号发生更改，除非缓冲区中的命令包含错误

### 使用示例

在 PL/SQL 块中使用 `/` 作为分隔符：

```sql
obclient> BEGIN
    ->   DBMS_OUTPUT.PUT_LINE('Hello, OceanBase!');
    -> END;
    -> /
Hello, OceanBase!

PL/SQL procedure successfully completed.

```

### 与其他分隔符的区别

- `;`：SQL 语句分隔符
 - `\g`：执行当前 SQL 语句
 - `\G`：垂直显示查询结果
 - `/`：主要用于 PL/SQL 块的分隔符，兼容 Oracle SQL*Plus

## PL/SQL 支持

OBClient 支持 Oracle 模式的 PL/SQL 语法，包括：

- 存储过程、函数和包的创建和执行
 - 匿名 PL/SQL 块
 - Oracle 数据类型和函数

### 创建存储过程示例

```sql
obclient> CREATE OR REPLACE PROCEDURE hello_world AS
    -> BEGIN
    ->   DBMS_OUTPUT.PUT_LINE('Hello, World!');
    -> END;
    -> /

Procedure created.

obclient> EXEC hello_world;
Hello, World!

```

### 创建函数示例

```sql
obclient> CREATE OR REPLACE FUNCTION add_numbers(a NUMBER, b NUMBER)
    -> RETURN NUMBER AS
    -> BEGIN
    ->   RETURN a + b;
    -> END;
    -> /

Function created.

obclient> SELECT add_numbers(10, 20) FROM dual;
ADD_NUMBERS(10,20)
------------------
                30

```

## Oracle 语法兼容性

OBClient 在连接 Oracle 模式租户时，会自动识别以下 Oracle 语法特性：

### 数据类型

- NUMBER、VARCHAR2、CHAR、DATE、TIMESTAMP 等 Oracle 数据类型
 - BLOB、CLOB、NCLOB 等大对象类型

### 系统函数和包

- `SYSDATE`、`SYSTIMESTAMP` 等日期时间函数
 - `DBMS_OUTPUT`、`DBMS_RANDOM` 等系统包
 - `DUAL` 表的使用

### 字符串和日期格式

- Oracle 风格的字符串连接（`||`）
 - Oracle 日期格式函数（`TO_CHAR`、`TO_DATE` 等）

### 示例

```sql
obclient> SELECT SYSDATE FROM dual;
SYSDATE
----------
2024-01-01 12:00:00

obclient> SELECT 'Hello' || ' ' || 'World' AS greeting FROM dual;
GREETING
----------
Hello World

obclient> SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') FROM dual;
TO_CHAR(SYSDATE,'YYYY-MM-DDHH24:MI:SS')
----------------------------------------
2024-01-01 12:00:00

```

## 相关文档

- [OBClient 概述](https://www.oceanbase.com/docs/common-obclient-doc-cn-1000000006361905)
 - [OBClient 快速开始](https://www.oceanbase.com/docs/common-obclient-doc-cn-1000000006361910)
 - [OBClient 交互式命令参考](https://www.oceanbase.com/docs/common-obclient-doc-cn-1000000006361911)
 - [SET 变量](https://www.oceanbase.com/docs/common-obclient-doc-cn-1000000006361918)

 上一篇 下一篇 ![有帮助](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) 咨询热线
