存储过程 小记

本文详细介绍了MySQL中的存储过程,包括IN、OUT、INOUT参数的使用,以及如何创建和调用存储过程。示例中展示了如何设置SQL语句的结束符号,创建带参数的存储过程,并提供了调用存储过程的实例,如带IN参数、OUT参数和多个OUT参数的存储过程。此外,还提及了INOUT参数的使用方法,并给出了相关函数创建和使用的基本规则。
摘要由CSDN通过智能技术生成
参数模式:
IN: 该参数可以作为输入,也就是该参数需要调用方 传入值;
OUT: 该参数可以作为输出,也就是该参数可以作为返回值;
INOUT:该参数即可以作为输入又可以作为输出,也就是该参数既需要传入值,又可以返回??
可以设置结束符号 , 一旦设置以后的sql语句都需要以设置的结束符号结尾
语法: DELIMITER  $
这就代表需要以 $  结束sql语句
1简单的空参存储过程创建;
可以先设置一个 结束符号;
DELIMITER $
        Pe  C 者
Create PROCEDURE myp1()
BEGIN
Insert into admin (name,pwd)
Values( tom , 000 ),Values( jack, 000 ),Values( lisa, 000 ),Values( joon, 000 ),Values( sam, 000 ) ; (这里注意 需要以分号结尾,之所以在开头设置 结束符号也是因为这里,如果不设置,怕sql语句执行到这里时,自动结束了  不管下面的部分了)
END $
如果存储过程只有一条sql语句的时候  BEGIN  END  可以不用加;
调用
CALL myp1()
和 java的方法调用类似,调用哪个存储过程,就写哪个存储过程名字
2, 带in 的存储过程
DELIMITER $
Create PROCEDURE myp2(IN name char(20),IN pwd char(20))
BEGIN
DECLARE result INT DEFAULT 0 ;   #声明一个变量 result ,并初始化值为0
Select count(*) INTO result    # INTO 赋值
From admin
Where admin.name = name AND admin.pwd = pwd 
#这里需要注意 如果参数和字段名相同时需要在字段名前加上表名. 来区分,要不    然条件无效 却不报错
        
select IF (result>0,’成功’,’失败’); 
#sql的if语句,条件语句为true ,输出成功,false输出失败
                                    
END $
CAll myp2( tom , 0000 ) $
  1. 带out的存储过程
输入一个女神名字,经过一个sql语句得到一个男神名字 赋值给 boyname 最终输出出来
Create PROCEDURE myp3 (IN beautyname char(20),out boyname char(20))
BEGIN
Select bo.name  INTO boyname
From boys bo
Inner join beauty b on bo.id = b.boyfriend_id
Where b.name = beautyname;
END $
SET @bName$  这句甚至可以省略
Call myp3( 小昭 ,@bName)$
Select @bName$
调用
 SET @bName$  myp2 的赋值 可以直接在 BEGIN END语法内进行,有一只可以再BEGIN END 语法外 使用
  1. 多个out的存储过程
Create PROCEDURE myp3 (IN beautyname char(20),out boyname char(20),out userCp INT)
BEGIN
Select bo.name,bo.userCp  INTO boyname,userCp
From boys bo
Inner join beauty b on bo.id = b.boyfriend_id
Where b.name = beautyname;
END $
SET @bName$  这句甚至可以省略
Call myp3( 小昭 ,@bName,@userCp)$
Select @bName,@usercp$
在 BEGIN END 里面的可以直接接进行值的重新赋值,比如set a = a*2
如果在外面的话那就需要 加上@ 符号
  1. INOUT 模式
Create procedure myp5(INOUT a INT,INOUT b INT)
BEGIN
SET a=a*2;
SET b=b*2;
END $
SET @m=10;
SET @n=20;
Call myp5(@m,@n)$
Select @m,@n
Drop  procedure  myp1;    删除名为  myp1的存储过程
Show create procedure myp1;    查看存储过程 信息
MySQL DATEDIFF 函数:获取两个日期的时间间隔
函数
创建的语法
Create function 函数名(参数) returns 返回类型
BEGIN
函数体
END
注意:函数体肯定会有return语句,如果没有会报错
如果return语句没有放到函数体最后不会报错但不建议
---------------------------------------------------------------------------------------------------------------------------------
外部连接既包含ON子句又包含WHERE子句时,应当只把表之间的连接条件写在ON子句中,对表中数据的筛选必须写在WHERE子句中。而内部连接的各条件表达式既可以放在ON子句又可以放在WHERE子句中。这是因为对于外部连接,保留表中被ON子句筛除掉的行要被添加回来,在此操作之后才会用WHERE子句去筛选连接结果中的各行。
---------------------------------------------------------------------------------------------------------------------------------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值