---
title: "PREPARE | OceanBase 文档中心"
description: PREPARE 描述 该语句用于准备一个语句并为其指定一个名称，用于稍后引用该语句。可以使用 EXECUTE 执行 Prepared 语句，并使用 DEALLOCATE PREPARE 释放该语句。 说明 Prepared 语句仅在当前会话中生效，不适用于其他会话。当会话结束时，所创建的 Prepared 语句不再存…
image: https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*OSPzQ6GUQF4AAAAAQHAAAAgAeiGDAQ/original
---
切换语言

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

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.0.0 社区版

# PREPARE

更新时间：2026-05-28 10:12:28

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.0.0/zh-CN/700.reference/200.sql-syntax/200.common-tenant-mysql-mode/600.sql-statement/4100.PREPARE.md)  

## 描述

该语句用于准备一个语句并为其指定一个名称，用于稍后引用该语句。可以使用 `EXECUTE` 执行 Prepared 语句，并使用 `DEALLOCATE PREPARE` 释放该语句。

> **说明**
>
>  
>
> - Prepared 语句仅在当前会话中生效，不适用于其他会话。当会话结束时，所创建的 Prepared 语句不再存在。
>  - 在存储例程中创建的 Prepared 语句具有全局性，则在程序执行完毕后不会释放它。但是在存储程序上下文中的 Prepared 语句不能引用存储过程或函数的参数或局部变量，否则会导致该语句无法在程序外执行。

## 语法

```sql
PREPARE stmt_name FROM preparable_stmt

```

## 参数解释

| 参数 | 描述 |
| --- | --- |
| stmt_name | 指定准备语句的名称。语句名称不区分大小写。 |
| preparable_stmt | 指定要准备执行的 SQL 语句。该参数是字符串字面量或包含 SQL 语句文本的用户变量，文本必须表示单个语句，而不是多个语句。 |

## Prepared 语句中允许使用的 SQL 语法

以下 SQL 语句可用作 Prepared 语句：

```sql
ALTER TABLE
ALTER USER
ANALYZE TABLE
CACHE INDEX
CALL
CHANGE MASTER
CHECKSUM {TABLE | TABLES}
COMMIT
{CREATE | DROP} INDEX
{CREATE | RENAME | DROP} DATABASE
{CREATE | DROP} TABLE
{CREATE | RENAME | DROP} USER
{CREATE | DROP} VIEW
DELETE
DO
FLUSH {TABLE | TABLES | TABLES WITH READ LOCK | HOSTS | PRIVILEGES
  | LOGS | STATUS | MASTER | SLAVE | DES_KEY_FILE | USER_RESOURCES}
GRANT
INSERT
INSTALL PLUGIN
KILL
LOAD INDEX INTO CACHE
OPTIMIZE TABLE
RENAME TABLE
REPAIR TABLE
REPLACE
RESET {MASTER | SLAVE | QUERY CACHE}
REVOKE
SELECT
SET
SHOW BINLOG EVENTS
SHOW CREATE {PROCEDURE | FUNCTION | EVENT | TABLE | VIEW}
SHOW {MASTER | BINARY} LOGS
SHOW {MASTER | SLAVE} STATUS
SLAVE {START | STOP}
TRUNCATE TABLE
UNINSTALL PLUGIN
UPDATE

```

## 示例

```sql
obclient> PREPARE stmt1 FROM 'SELECT SQRT(POW(?,2) + POW(?,2)) AS hypotenuse';
Query OK, 0 rows affected

obclient> SET @a = 3;
Query OK, 0 rows affected

obclient> SET @b = 4;
Query OK, 0 rows affected

obclient> EXECUTE stmt1 USING @a, @b;
+------------+
| hypotenuse |
+------------+
|          5 |
+------------+
1 row in set

```

> **说明**
>
>  
>
> OceanBase 数据库在当前版本暂不支持交互客户端显式结果。

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