第一次使用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