【MySQL其他】存储过程
 一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。
1、存储过程调试工具
navicat 
2、简单存储过程编写
2.1、不带参数
create procedure UserInfo() #过程名字叫UserInfo begin select*from user; end;
2.2、带输入参数(参数不写in或者out时,默认是in)
create procedure check(in id int,in result int) #带id和result两个输入参数,并且是int型的 begin set@id= id; #将输入参数赋值给变量@id set@result= result; update user set result =@resultwhere id =@id; end;
2.3、分页读取数据库表记录
#传入参数当前页、Total = 15每页显示的记录条数 create procedure SP_GET_UserInfo(in `Page` INT,in `Total` INT) BEGIN SET @pagesize = 15; SET @count = (SELECT count(*) as count from user); SET @pagenum = CEIL(@count/@pagesize); #每页显示15条,输出user表的总页数 IF Page < 1 THEN SET Page = 1; END IF; SET @cSql = concat('SELECT *,@pagenum as allcount FROM ', 'user', ' LIMIT ?, ?'); PREPARE iOffset FROM @cSql; #PREPARE 预定义一个语句,并将@cSql赋值给iOffset SET @iOffset = (Page - 1) * Total; SET @iTotal = Total; EXECUTE iOffset USING @iOffset, @iTotal; #EXCUTE 执行预备语句定 DEALLOCATE PREPARE iOffset; # DEALLOCATE PREPARE 表示删除这条预定义语句 END
注释:1、只有limit不支持传递参数,所以需要通过预定义语句PREPARE和EXECUTE传递变量并执行。
           2、 :=表示赋值。= 可以表示判断、赋值。
           3、USING 传递时根据? 顺序,放对应参数变量即可
3、参考文章
MYSQL总教程:http://www.cnblogs.com/lyhabc/p/3691555.html
MYSQL存储过程入门:   http://kb.cnblogs.com/page/107457/    
MYSQL存储过程中的基本函数:http://blog.chinaunix.net/uid-20577907-id-3175057.html
MYSQL存储过程实例: http://blog.csdn.net/woshixuye/article/details/8348180
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号