存储过程 procedure
MySQL 5.0 版本开始支持存储过程。
存储过程(Stored Procedure)是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象。
存储过程是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需要时)来调用执行。
存储过程思想上很简单,就是数据库 SQL 语言层面的代码封装与重用。
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;
标签:存储,--,sp,procedure,MySQL,select,wxdb
From: https://blog.51cto.com/lianghecai/5784581