出於某種原因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