出于某种原因wchiquito的UPDATE对我来说是不行的,所以我修改成这样:
CREATE PROCEDURE check_table_existence (IN table_name CHAR(64))
BEGIN
DECLARE CONTINUE HANDLER FOR SQLSTATE '42S02' SET @err = 1;
SET @err = 0;
SET @table_name = table_name;
SET @sql_query = CONCAT('SELECT NULL FROM ',@table_name);
PREPARE stmt1 FROM @sql_query;
IF (@err = 1) THEN
SET @table_exists = 0;
ELSE
SET @table_exists = 1;
DEALLOCATE PREPARE stmt1;
END IF;
END
然后:
CALL check_table_existence('existent_table');
SELECT @table_exists;
给出
+---------------+
| @table_exists |
+---------------+
| 1 |
+---------------+
,否则为0。
这也是一种解决方法,但它对我来说工作正常。 它也适用于TEMPORARY TABLE。
我会试着在表上尝试DESCRIBE并检查返回的sqlcode(认为可以在存储过程中完成)。不知道您是否创建了/如果不存在,您是否得到不同的sqlcode取决于是否创建了表。 – Kickstart