mysql, перебирать имена столбцов - PullRequest
10 голосов
/ 09 февраля 2011

Я хотел бы получить все имена столбцов из таблицы MySQL, пройтись по каждому имени столбца и затем запустить хранимую процедуру, используя эти имена столбцов в качестве переменной.Кое-что с эффектом:

colnames = get column names from table

for each colname
  if something changed then
    do something
  else
    do something else

Похоже, SHOW COLUMNS FROM myTable даст мне имена столбцов, но как мне получить имена столбцов в цикле?

Мне бы очень хотелосьзапустить все это в хранимой процедуре, используя собственный SQL.Так как я все еще изучаю тонкости MySQL, и это действительно поможет моему проекту.Спасибо за вашу помощь.

Ответы [ 2 ]

18 голосов
/ 10 февраля 2011

Я думаю, вы хотите что-то вроде этого:

DECLARE col_names CURSOR FOR
  SELECT column_name
  FROM INFORMATION_SCHEMA.COLUMNS
  WHERE table_name = 'tbl_name'
  ORDER BY ordinal_position;


select FOUND_ROWS() into num_rows;

SET i = 1;
the_loop: LOOP

   IF i > num_rows THEN
        CLOSE col_names;
        LEAVE the_loop;
    END IF;


    FETCH col_names 
    INTO col_name;     

     //do whatever else you need to do with the col name

    SET i = i + 1;  
END LOOP the_loop;
4 голосов
/ 10 февраля 2011

Вы можете написать запрос к information_schema, чтобы получить имена столбцов:

SELECT column_name
  FROM INFORMATION_SCHEMA.COLUMNS
  WHERE table_name = 'tbl_name'
  ORDER BY ordinal_position

Имена столбцов затем возвращаются так же, как и любые данные из таблицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...