通用的分页存储过程

存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。

分隔符

MySQL默认以";"为分隔符,如果没有声明分隔符,则编译器会把存储过程当成SQL语句进行处理,因此编译过程会报错,所以要事先用“DELIMITER //”声明当前段分隔符,让编译器把两个"//"之间的内容当做存储过程的代码,不会执行这些代码;“DELIMITER ;”的意为把分隔符还原。

参数

存储过程根据需要可能会有输入、输出、输入输出参数,如果有多个参数用","分割开。MySQL存储过程的参数用在存储过程的定义,共有三种参数类型,IN,OUT,INOUT:

IN参数的值必须在调用存储过程时指定,在存储过程中修改该参数的值不能被返回,为默认值OUT:该值可在存储过程内部被改变,并可返回INOUT:调用时指定,并且可被改变和返回

过程体

过程体的开始与结束使用BEGIN与END进行标识。

变量

语法:DECLARE 变量名1[,变量名2...] 数据类型 [默认值];

变量赋值

语法:SET 变量名 = 变量值 [,变量名= 变量值 ...]

并且变量只可在存储过程或者自定义函数中定义

通用的分页存储过程

#新建一个存储过程

DELIMITER $$

CREATE
    PROCEDURE `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 ;

这样就把分页存储过程写完了