---
title: "存储过程 | OceanBase 文档中心"
description: "存储过程 存储过程是一种没有直接返回值的子程序。当参数类型为 OUT 时，存储过程也可以给调用者返回值。 存储过程的结构 一个存储过程的结构如下： CREATE [DEFINER = user] PROCEDURE sp_name ([proc_parameter[,...]]) [characteristic ..…"
---
切换语言

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

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

# 存储过程

更新时间：2026-06-30 16:45:26

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.0.0/zh-CN/700.reference/100.oceanbase-database-concepts/700.user-interface-and-query-language/200.PL/200.stored-procedure-1.md)  

存储过程是一种没有直接返回值的子程序。当参数类型为 OUT 时，存储过程也可以给调用者返回值。

## 存储过程的结构

一个存储过程的结构如下：

```sql
CREATE
    [DEFINER = user]
    PROCEDURE sp_name ([proc_parameter[,...]])
    [characteristic ...] routine_body

proc_parameter:
    [ IN | OUT | INOUT ] param_name type

characteristic: {
    COMMENT 'string'
  | LANGUAGE SQL
  | [NOT] DETERMINISTIC
  | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
  | SQL SECURITY { DEFINER | INVOKER }
}

routine_body:
    Valid SQL routine statement

```

## 存储过程的创建

存储过程通过 `CREATE PROCEDURE` 语句创建存储过程。

- `DECLARE` 模块要放在 `BEGIN END;` 模块中，并且所有定义声明完成后才能定义其他语句。
 - 可以定义 DETERMINISTIC / LANGUAGE SQL 等 sp_create_chistic 信息以丰富存储过程的使用。
 - MySQL 模式下的存储过程不存在重载情况，所以删除时不用考虑参数类型。

示例如下：

```sql
obclient> CREATE TABLE city(CountryCode CHAR(3))/
Query OK, 0 rows affected

obclient> CREATE PROCEDURE citycount (IN country CHAR(3), OUT cities INT)
     BEGIN
        SELECT COUNT(*) INTO cities FROM city
         WHERE CountryCode = country;
     END/
Query OK, 0 rows affected

```

## 存储过程的调用

创建好的存储过程，需要使用 `CALL` 语句来调用，但是它不能作为 SQL 表达式的一部分被调用。

```sql
obclient> CALL citycount('JPN', @cities);/
+--------+
| cities |
+--------+
|      0 |
+--------+
1 row in set

obclient> SELECT @cities/
+---------+
| @cities |
+---------+
|       0 |
+---------+
1 row in set

obclient> DROP PROCEDURE citycount/
Query OK, 0 rows affected

```

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