mysql存儲過程及返回值

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');

發佈了18 篇原創文章 · 獲贊 13 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章