mysql学习笔记之存储过程学习笔记

 
存储过程学习笔记
 什么叫存储过程
 存储过程,带有逻辑的sql语句

 存储过程特点
                                   1)执行效率非常快!存储过程是在数据库的服务器端执行的!!!
                                   2)移植性很差!不同数据库的存储过程是不能移植。
创建存储过程
delimiter $    --声明存储过程的结束符         
CREATE PROCEDURE pro_test()   --存储过程名称(参数列表)
BEGIN         --   开始
    -- 可以写多个sql语句    --sql语句+流程控制
     select *FROM employee;
END $                             --结束  结束符

--执行存储过程
call pro_test();             
 参数:
in: 表示输入参数,可以携带数据到存储过程中
out: 便是输出参数,可以从存储过程中返回结果
inout:即可以有输出也可以有输入
-- 带有存储谁参数的存储过程
-- 需求:传入一个员工的id,查询员工信息
--创建
delimter $
create proocedure pro_findByid(in eid int) --in:输入参数
begin
          select * from employee where id=eid;
end$
--调用
call pro_findById(4);

--需求带有输出参数的存储过程 
创建
delimter $
create proocedure pro_findByid(out str varchar(20)) --out:输出参数
begin
          set str="sssss";
end$
--mysql的变量:全局变量(内置变量),查看全局变量 :show variables(所有连接斗气作用)
--查看某个全局变量:select @@变量名
-- character_set_cliect: 服务器接受客户端的编码格式                       set  character_set_cliect=gbk:在命令性执行可以改变编码格式
--character_set_result;反之
--会话变量:只存在于当前客户端与数据库服务端的一次连接中。如果连接中断会话变量会全部丢失
--定义会话变量:set@变量=值
--查看会话变量:select @变量
--局部变量:在存储过程工资高使用的变量。只要存储过程执行完毕局部变量就会消失不用@
-- 定义一个会话变量  使用name会话变量接收存储过程的返回值
call pro_  pro_findByid( @name);
查看变量
select @name;    
删除存储过程: drop procedure pro_findByid ;    
--有输入输出的存储过程  
delimter $
create proocedure pro_testInOut(inout n int) --out:输出参数
begin
          --查看变量
          select n;
          set n=500; 
end$
--调用
set @n=10;
call     pro_testInOut (@n);  
select @n;
     
--带有条件判断的存储过程逻辑
--需求 输入一个整数,如果1 返回星期一,如果2 ,返回星期二如果 ,3返回星期三    其他,                   
delimter $
create proocedure pro_testif(in num int,out str varchar(20)) --out:输出参数
begin
          if num=1 then
                                set str="星期一";         
          else if num=2 then
                                set str="星期二";         
          else if num=3 then
                                set str="星期三";
          end if;
end$
    
call pro_testif(4,@test);
select @test;
3.5 带有循环功能的存储过程
--需求:输入一个整数
delimter $
create proocedure pro_testwhile(in num int,out result int) --out:输出参数
begin
     --定义一个索引变量,局部变量
     declare i int default 1;
     declare vsum int defalt 0;
     while i<num do
          set vsum=vsum+i;
           set i=i+1;
     end while
     set result=vsum;      
end$
call pro_testwhile(100,@result);
select @reuslt;

--语法·:使用查询的结果复制给变量(into)
delimter $
create proocedure (in eid int,out vname varchar(20)) --out:输出参数
begin
         select empNmae into vnamefrom employee where id=eid;
end$
call  pro_testId2(1,@name);
select @name;
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值