# 控制结构（IF、LOOP）

URL: https://caijiao.org/mariadb/program/procedure/control
Source: docs/mariadb/program/procedure/control.md
Description: 本节介绍 MariaDB 存储过程中的控制结构，包括 IF 条件判断和 LOOP 循环，帮助实现复杂的流程控制和业务逻辑。

## 1. IF 语句

用于根据条件执行不同的代码块，支持 IF...ELSEIF...ELSE 结构。

### 语法示例

```sql
IF condition THEN
    -- 条件为真时执行
ELSEIF another_condition THEN
    -- 另一个条件为真时执行
ELSE
    -- 以上条件均不满足时执行
END IF;
````

### 示例

```sql
DECLARE v_score INT DEFAULT 85;

IF v_score >= 90 THEN
    SET @grade = 'A';
ELSEIF v_score >= 75 THEN
    SET @grade = 'B';
ELSE
    SET @grade = 'C';
END IF;
```

## 2. LOOP 循环

用于重复执行代码块，需配合 LEAVE 语句跳出循环。

### 语法示例

```sql
loop_label: LOOP
    -- 循环体
    IF exit_condition THEN
        LEAVE loop_label;
    END IF;
END LOOP loop_label;
```

### 示例

```sql
DECLARE v_counter INT DEFAULT 0;

count_loop: LOOP
    SET v_counter = v_counter + 1;
    IF v_counter > 10 THEN
        LEAVE count_loop;
    END IF;
END LOOP count_loop;
```

## 3. WHILE 和 REPEAT

* **WHILE**：先判断条件，再执行循环体。

```sql
WHILE condition DO
    -- 循环体
END WHILE;
```

* **REPEAT**：先执行循环体，再判断条件。

```sql
REPEAT
    -- 循环体
UNTIL condition
END REPEAT;
```

---

掌握控制结构可以实现复杂的业务流程控制，提高存储过程的灵活性与功能性。
