存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。
分隔符
MySQL默认以";"为分隔符,如果没有声明分隔符,则编译器会把存储过程当成SQL语句进行处理,因此编译过程会报错,所以要事先用“DELIMITER //”声明当前段分隔符,让编译器把两个"//"之间的内容当做存储过程的代码,不会执行这些代码;“DELIMITER ;”的意为把分隔符还原。
参数
存储过程根据需要可能会有输入、输出、输入输出参数,如果有多个参数用","分割开。MySQL存储过程的参数用在存储过程的定义,共有三种参数类型,IN,OUT,INOUT:
IN参数的值必须在调用存储过程时指定,在存储过程中修改该参数的值不能被返回,为默认值 OUT:该值可在存储过程内部被改变,并可返回 INOUT:调用时指定,并且可被改变和返回过程体
过程体的开始与结束使用BEGIN与END进行标识。
变量
语法:DECLARE 变量名1[,变量名2...] 数据类型 [默认值];
变量赋值
语法:SET 变量名 = 变量值 [,变量名= 变量值 ...]
并且变量只可在存储过程或者自定义函数中定义
#新建一个存储过程
DELIMITER $$
CREATEPROCEDURE `tex`.`admin2`(IN a INT,IN b INT)
BEGIN
#定义一个变量 然后用拼接函数(CONCAT)把sql语句拼接
SET @a1=CONCAT('select*from admins limit ',(a-1)*b,',',b,'');
PREPARE b FROM @a1;
EXECUTE b;END$$
DELIMITER ;
这样就把分页存储过程写完了