CALL
=====

调用存储过程。

---

语法
--------

```sql
CALL <name> ( [ <argument> ] [, ...] )
```

---

描述
----------

使用 `CALL` 调用存储过程时，必须拥有该存储过程的 `EXECUTE` 权限。

如果存储过程有任何输出参数，那么将返回一个包含这些参数的值的结果行。

---

参数
----------

- _`<name>`_

    存储过程的名称，支持使用 Schema 名称进行限定。

- _`<argument>`_

    存储过程的输入参数。

---


使用注意事项
--------

要调用函数，而非存储过程，请使用 [SELECT](/maxir/Reference_Manual/sql-commands/select.md)。

如果在事务块中调用 `CALL`，那么被调用的存储过程不能运行事务控制语句。只有在 `CALL` 在其自己的事务中被调用时，才允许使用事务控制语句。

---

示例
--------

调用存储过程 `product_count()`：

```sql
CALL product_count();
```

---

SQL 标准兼容性
-------------

`CALL` 符合 SQL 标准。
