第一次使用mysql数据库创建存储过程 折腾了一番。
呵呵,不过还是挺值得的,折腾出来了,贴出来供大家看看。
写这个存储过程的目的是这样的, 我想通过执行此存储过程传递一个表的名称,然后它就能自动的统计出来表中第一列中的最大值。
#删除存储过程; DROP PROCEDURE genBillsNoProc; #创建存储过程; DELIMITER $$ CREATE PROCEDURE genBillsNoProc(IN tableName VARCHAR(30),OUT data_t VARCHAR(100)) BEGIN DECLARE sql_1 VARCHAR(1000); DECLARE sql_2 VARCHAR(1000); SET sql_1 = CONCAT("SELECT COLUMN_NAME into @colName FROM information_schema.COLUMNS WHERE table_name='",tableName,"' limit 0,1"); #执行sql_1SQL语句; SET @frist_sql=sql_1; PREPARE stmt FROM @frist_sql; EXECUTE stmt; SET sql_2 = CONCAT("select max(",@colName,") into @sql_result from ",tableName); #执行sql_2SQL语句; SET @second_sql=sql_2; PREPARE stmt1 FROM @second_sql; EXECUTE stmt1; #设置返回结果; SET data_t := @sql_result; END$$
下面是调用存储过程:
##执行存储过程 CALL genBillsNoProc('t_dept',@data_t); SELECT @data_t maxValue;
执行结果:
maxValue;
104