DROP PROCEDURE IF EXISTS getMax;
CREATE PROCEDURE getMax (myfield varchar(32),tableName varchar(32),out myMaxValue FLOAT) BEGIN
set @getMaxValueSql=CONCAT('SELECT MAX(',myfield,') into @n FROM ',tableName);
PREPARE getMaxValueSql from @getMaxValueSql;
EXECUTE getMaxValueSql;
DEALLOCATE PREPARE getMaxValueSql;
set myMaxValue=@n;
END;
DROP PROCEDURE IF EXISTS computeRate;
CREATE PROCEDURE computeRate (bcs varchar(32),cs varchar(32),tableName varchar(32),tempTableName varchar(32)) BEGIN
CALL getMax('設備總檯數','mytable',@n);
#DROP TABLE IF EXISTS tempTableName;
set @deleteTable=CONCAT('DROP TABLE IF EXISTS ',tempTableName);
PREPARE deleteTable from @deleteTable;
EXECUTE deleteTable;
DEALLOCATE PREPARE deleteTable;
set @compute=CONCAT('CREATE TABLE ',tempTableName,' as SELECT *,',bcs,'/',@n,' 你要的名字 from ',tableName);
PREPARE compute from @compute;
EXECUTE compute;
DEALLOCATE PREPARE compute;
END;
CALL computeRate('設備總檯數','編號','mytable','mytempTable');