# 创建过程与函数

URL: https://caijiao.org/mariadb/program/procedure/create
Source: docs/mariadb/program/procedure/create.md
Description: 本节介绍 MariaDB 中存储过程与函数的创建和使用方法，帮助实现数据库中的封装逻辑，提高代码复用和维护性。

## 1. 存储过程（Stored Procedure）

存储过程是一组预编译的 SQL 语句集合，可以通过调用执行，实现复杂业务逻辑。

### 创建存储过程

```sql
DELIMITER //

CREATE PROCEDURE AddUser(
    IN p_name VARCHAR(50),
    IN p_email VARCHAR(100)
)
BEGIN
    INSERT INTO users (name, email) VALUES (p_name, p_email);
END //

DELIMITER ;
````

### 调用存储过程

```sql
CALL AddUser('Alice', 'alice@example.com');
```

## 2. 函数（Function）

函数是返回单个值的存储程序，可在查询中调用。

### 创建函数

```sql
DELIMITER //

CREATE FUNCTION GetUserCount()
RETURNS INT
DETERMINISTIC
BEGIN
    DECLARE total INT;
    SELECT COUNT(*) INTO total FROM users;
    RETURN total;
END //

DELIMITER ;
```

### 使用函数

```sql
SELECT GetUserCount();
```

## 3. 参数类型

* IN：输入参数，只读。
* OUT：输出参数，存储过程执行后返回。
* INOUT：输入输出参数，既传入又返回。

---

存储过程和函数可封装业务逻辑，提高数据库操作的效率和安全性。
