有时表的字段过多且字段复杂,为了方便可以写一个函数直接返回表的所有字段。以学生表为例,先创建表:
CREATE TABLE `student_info` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`student_name` varchar(10) DEFAULT NULL,
`class_no` varchar(10) DEFAULT NULL,
`student_id` varchar(10) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8
创建函数:
DELIMITER $$
CREATE
FUNCTION `这里是数据库名称`.`table_info`(param_table_name VARCHAR(100))
RETURNS VARCHAR(1024) CHARSET utf8
BEGIN
DECLARE var_table_field VARCHAR(1024);
DECLARE var_table_field_sentence VARCHAR(1024);
SELECT GROUP_CONCAT(COLUMN_NAME SEPARATOR ',') INTO var_table_field FROM information_schema.COLUMNS WHERE table_name = param_table_name AND table_schema = DATABASE();
SET var_table_field_sentence=CONCAT('select ',var_table_field ,' from ' ,param_table_name);
RETURN var_table_field_sentence ;
END$$
DELIMITER ;
执行函数:
SELECT `table_info`('student_info')
返回效果:
SELECT id,student_name,class_no,student_id FROM student_info