0

我有一个名为 tableExists 的函数。它可用于检查表是否存在。我想在数据库升级脚本中使用它。我可以使用这样的功能:

select myDb.tableExists('myDb', 'someTable') as cnt into @exists;

并看到这样的结果:

mysql> select @exists;
+---------+
| @exists |
+---------+
|       1 |
+---------+

现在,我想在 If 语句中使用它,然后是 create table 语句。但是,我遇到了 if 的问题。以下是我要测试的内容:

mysql> IF (@exists = 1) THEN
    -> select 'exists'
    -> END IF;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the
right syntax to use near 'IF (@exists = 1) THEN
select 'exists'
END IF' at line 1

我在这里想念什么?这应该很简单。

4

2 回答 2

3

你只能使用IF里面的一个存储过程。

有效的选择语句将是:

SELECT CASE (@exists) WHEN 1 THEN 'exists' END as DoesItExist

如果您将案例用作存储过程中的独立元素,则需要以end case任何方式结束它。

于 2013-02-25T18:40:14.817 回答
2

为什么不直接IF NOT EXISTSCREATE TABLE查询中使用并省去所有这些麻烦:

CREATE TABLE new_table IF NOT EXISTS
... {table definition}

如果表已经存在,则不会发生任何事情。

于 2013-02-25T18:41:21.140 回答