灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:2878回复:0

[mysql]sp_object MYSQL获取当前实例下指定对象与定义语句内容

楼主#
更多 发布于:2013-05-28 13:23
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 ;

喜欢0 评分0
游客

返回顶部