просторах интернета нашёл процедуру, которая проверяет существование колонки. Сама по себе она работает нормально, чётко и по факту отдаёт 1/0, но запускаю из другой процедуры (которая в цикле создаёт генерируемые колонки) и всё время отдаёт 0. В какую сторону смотреть?
Сама процедура:
DROP PROCEDURE IF EXISTS fieldExists;
delimiter //
-- See: stackoverflow.com/questions/3395798/check-if-a-column-exists-in-a-table-with-mysql
-- ------------------------------------------------------------
-- Use the inforamtion_schema to tell if a field exists.
-- Optional param dbName, defaults to current database
-- ------------------------------------------------------------
CREATE PROCEDURE fieldExists (
OUT _exists BOOLEAN, -- return value
IN tableName CHAR(255), -- name of table to look for
IN columnName CHAR(255), -- name of column to look for
IN dbName CHAR(255) -- optional specific db
) BEGIN
-- try to lookup db if none provided
SET @_dbName := IF(dbName IS NULL, database(), dbName);
IF CHAR_LENGTH(@_dbName) = 0
THEN -- no specific or current db to check against
SELECT FALSE INTO _exists;
ELSE -- we have a db to work with
SELECT IF(count(*) > 0, TRUE, FALSE) INTO _exists
FROM information_schema.COLUMNS c
WHERE
c.TABLE_SCHEMA = @_dbName
AND c.TABLE_NAME = tableName
AND c.COLUMN_NAME = columnName;
END IF;
END //
delimiter ;
Процедура которая в цикле создаёт генерируемые колонки - это тоже какой-то нонсенс . для справки нонсенс переводится с иностранного как чушь, бред. Такой процедуры у тебя быть не может потому что в реляционной базе данных в каждой таблице фиксированное количество полей оно не меняется никогда при работе . реляционная СУБД -Это тебе не Excel это чётко формализированная штука
"Не может" или "Не должно быть"?
Если у тебя есть нужда в чём-то с переменной длиной, то это должны быть записи в таблице, а не поля в одной записи
Не должно быть естественно
Обсуждают сегодня