Я хочу, чтобы пользователь ввел любую базу данных, которую он хочет проверить, и любые таблицы, которые он хочет проверить. Например, вызов будет выглядеть так:
call tableCheck('MyDatabase', 'table1 table20 table3')
Таким образом, процедура будет проверять эти таблицы (с разделителями-пробелами). У меня есть код ниже, но у меня проблемы с проверкой других таблиц, он читает первую, но не вторую или третью. ТАК, что мой код не зацикливается и не читает следующее слово.
PROCEDURE `tableCheck` (db VARCHAR(256), db_tables VARCHAR(256))
BEGIN
DECLARE tbl, tbls VARCHAR(256);
DECLARE c INT DEFAULT 0;
SET tbls = db_tables;
WHILE c = 0 DO
#split word
SET tbl = SUBSTRING_INDEX(tbls," ",1);
#go to next string
SET tbls = SUBSTR(tbls,LENGTH(tbl)+1);
#check every table
SELECT table_name AS 'Table Name'
FROM INFORMATION_SCHEMA.TABLES
WHERE table_schema=db AND table_name=tbl;
IF tbls = 0 THEN
SET c = 1;
END IF;
END WHILE;
END
tbls = 0
всегда будет истинным. - person Uueerdo   schedule 30.09.2015tbls REGEXP '[a-zA-Z]+'
- person Uueerdo   schedule 30.09.2015