0
点赞
收藏
分享

微信扫一扫

MySQL 存储过程 procedure

存储过程 procedure

MySQL 5.0 版本开始支持存储过程。

存储过程(Stored Procedure)是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象。

存储过程是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需要时)来调用执行。

存储过程思想上很简单,就是数据库 SQL 语言层面的代码封装与重用。

image-20210526113001368

image-20210526113908663

select user(),database(),version(),now();
select * from stu limit 10;

-- 建立存储过程
delimiter $
create procedure sss2()
begin
    select * from stu limit 10;
    /*  声明变量 if语句 loop循环语句 sql语句 */
end $
delimiter ;

-- 调用执行存储过程
call sss;
call sss();

-- 查看wxdb数据库所有存储过程名称
select `SPECIFIC_NAME` from `INFORMATION_SCHEMA`.`ROUTINES` where `ROUTINE_SCHEMA` = 'wxdb' and ROUTINE_TYPE = 'PROCEDURE';

-- 建立查看数据库的存储过程
delimiter $
create procedure sp(dbname varchar(100))
begin
    select `SPECIFIC_NAME` from `INFORMATION_SCHEMA`.`ROUTINES` where `ROUTINE_SCHEMA` = dbname and ROUTINE_TYPE = 'PROCEDURE';
end $
delimiter ;
-- 删除存储过程
drop procedure sp;
call sp('wxdb');

call sp('hbcf')

use mysql;
select user(),database(),version(),now();
-- 当前库在mysql上,可以跨库调用存储过程
call wxdb.sp('wxdb');

use wxdb;

call sp('wxdb');
show global variables ;
show variables ;
select @@version,@@port;

-- 查看某数据库存储
show procedure status where db='wxdb';



select count(*) from stu;

delimiter $
create procedure sp_count(in tname varchar(50),out cc int)
begin
    --  SET @sqlcmd = concat('select count(*) into ',cc,' from ', tname);
     -- prepare stmt from @sqlcmd;
     -- execute stmt;
     -- deallocate prepare stmt;

    select count(*) into cc from stu;
end $
delimiter ;
drop procedure sp_count;
call sp_count('stu',@aa);
select @aa;
举报

相关推荐

0 条评论