sp_object MYSQL獲取當前實例下指定對象與定義語句內容 [sql] DELIMITER $$ USE `test`$$ DROP PROCEDURE IF EXISTS `sp_object`$$ CREATE PROCEDURE `sp_object` ( p_OBJECTNAME VARCHAR(255), p_DBNAME VARCHAR(255) ) BEGIN /* 作者:陳恩輝 調用示例: CALL sp_object ( 'UpdateFactAdGroupDailyUsageByHourly','' ); */ -- 過程與函數 SELECT `type` AS __TYPE, db AS DBNAME ,`name` AS OBJECTNAME ,body AS DEFINITION FROM mysql.proc a WHERE db LIKE CONCAT(p_DBNAME,'%') AND `name` LIKE CONCAT(p_OBJECTNAME, '%') -- AND `type` = 'PROCEDURE' -- 表 UNION ALL SELECT 'TABLE' AS __TYPE, TABLE_SCHEMA,TABLE_NAME ,'' AS DEFINITION FROM information_schema.TABLES a WHERE TABLE_SCHEMA LIKE CONCAT(p_DBNAME,'%') AND table_name LIKE CONCAT(p_OBJECTNAME,'%') -- 觸發器 UNION ALL SELECT 'TRIGGER' AS __TYPE ,TRIGGER_SCHEMA AS DBNAME ,TRIGGER_NAME ,ACTION_STATEMENT AS DEFINITION FROM information_schema.`TRIGGERS` a WHERE TRIGGER_SCHEMA LIKE CONCAT(p_DBNAME,'%') AND TRIGGER_NAME LIKE CONCAT(p_OBJECTNAME, '%') -- 視圖 UNION ALL SELECT 'VIEW' AS __TYPE ,TABLE_SCHEMA AS DBNAME,TABLE_NAME AS `viewname`,VIEW_DEFINITION AS DEFINITION FROM information_schema.`VIEWS` a WHERE TABLE_SCHEMA LIKE CONCAT(p_DBNAME,'%') AND TABLE_NAME LIKE CONCAT(p_OBJECTNAME, '%') ORDER BY __TYPE ,DBNAME ; END$$ DELIMITER ;