mysql存储过程

查询数据库中的存储过程

 

方法一:

       

select  `name`  from  mysql. proc   where  db  =   ' your_db_name '   and  `type`  =   ' PROCEDURE '

 

 

 

方法二:

        

 show  procedure  status;

 

 

 

查看存储过程或函数的创建代码

 

show  create   procedure  proc_name;
show 
create   function  func_name;

新建一个存储过程

 

DELIMITER $$
DROP PROCEDURE IF EXISTS `pro_find`$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `pro_find`()
BEGIN
    DECLARE done INT DEFAULT 0;
    DECLARE a,b INT DEFAULT 0;

    DECLARE cur1 CURSOR FOR SELECT mark FROM stugra;
    DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
    OPEN cur1;
    REPEAT
    FETCH cur1 INTO a;
    IF NOT done THEN
       IF  a<60  THEN
        SET b=b+1;
       END IF;
    ELSE
    SELECT b;
    END IF;
    UNTIL done END REPEAT;
    CLOSE cur1;
    END$$

DELIMITER ;

 

DELIMITER $$
DROP PROCEDURE IF EXISTS `Pro_hr_total_record`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `Pro_hr_total_record`
(
    TabName varchar(20),
    SQLFilter varchar(1000),
    CountIndex int
)
BEGIN
    declare i int;
    declare SQLStr varchar(1000);
    drop table if exists hr_total_record;
    set i=0;
    set SQLStr='create table hr_total_record (select staff_name,sum(t_month) from ';
    set SQLStr=CONCAT(SQLStr,TabName,' where ');
    while i<CountIndex do
        set SQLStr = CONCAT(SQLStr,substring_index(SQLFilter,';',i));
        set i = i+1;
    end while;
    set SQLStr=CONCAT(SQLStr,' )');
    SET @sql = SQLStr;
    PREPARE sl FROM @sql;
    EXECUTE sl;
    DEALLOCATE PREPARE sl;
END$$

DELIMITER ;

 

你可能感兴趣的:(Mysql存储过程)