#### 28.4.4.26 表\_exists() 过程

[](<>)[](<>)

测试给定表是否作为常规表存在，a`暂时的`表或视图。该过程返回表类型`出去`范围。如果给定名称同时存在临时表和永久表，`暂时的`被退回。

##### 参数

-   `in_db VARCHAR(64)`：要在其中检查表是否存在的数据库的名称。

-   `in_table VARCHAR(64)`：要检查是否存在的表的名称。

-   `out_exists ENUM('', 'BASE TABLE', 'VIEW', 'TEMPORARY')`: 返回值。这是一`出去`参数，所以它必须是一个可以存储表类型的变量。当过程返回时，该变量具有以下值之一，以指示表是否存在：

    -   `''`: 表名不作为基表存在，`暂时的`表或视图。

    -   `基表`：表名作为基本（永久）表存在。

    -   `看法`：表名作为视图存在。

    -   `暂时的`: 表名作为`暂时的`桌子。

##### 例子

```
mysql> CREATE DATABASE db1;
Query OK, 1 row affected (0.01 sec)

mysql> USE db1;
Database changed

mysql> CREATE TABLE t1 (id INT PRIMARY KEY);
Query OK, 0 rows affected (0.03 sec)

mysql> CREATE TABLE t2 (id INT PRIMARY KEY);
Query OK, 0 rows affected (0.20 sec)

mysql> CREATE view v_t1 AS SELECT * FROM t1;
Query OK, 0 rows affected (0.02 sec)

mysql> CREATE TEMPORARY TABLE t1 (id INT PRIMARY KEY);
Query OK, 0 rows affected (0.00 sec)

mysql> CALL sys.table_exists('db1', 't1', @exists); SELECT @exists;
Query OK, 0 rows affected (0.01 sec)

+-----------+
| @exists   |
+-----------+
| TEMPORARY |
+-----------+
1 row in set (0.00 sec)

mysql> CALL sys.table_exists('db1', 't2', @exists); SELECT @exists;
Query OK, 0 rows affected (0.02 sec)

+------------+
| @exists    |
+------------+
| BASE TABLE |
+------------+
1 row in set (0.00 sec)

mysql> CALL sys.table_exists('db1', 'v_t1', @exists); SELECT @exists;
Query OK, 0 rows affected (0.02 sec)

+---------+
| @exists |
+---------+
| VIEW    |
+---------+
1 row in set (0.00 sec)

mysql> CALL sys.table_exists('db1', 't3', @exists); SELECT @exists;
Query OK, 0 rows affected (0.00 sec)

+---------+
| @exists |
+---------+
|         |
+---------+
1 row in set (0.00 sec)
```
