数据库:存储过程与函数

一:存储过程

含义:一组预先编译好的sql语句的集合,理解成批处理语句

1.创建语法

create procedure 存储过程名(参数列表)
  begin
       存储过程体(一组合法的sql)
  end
注意:
     1.参数列表包含三部分:参数模式 参数名   参数类型
                                                 in       stuname  varchar(20)
                         参数模式:in  该参数可以作为输入
                                           out 该参数可以作为输出,返回值
                                           inout可作为输入输出 
     2.如果存储过程体仅一句话,begin end可以省略
       存储过程体中的每条sql语句的结尾要求必须加分号
       存储过程结尾可以使用 delimiter重新设置:delimiter 结束标记

2.调用语法

call 存储过程名(实参列表)

#1.空参列表
  DELIMITER $$
  CREATE PROCEDURE myp()
  BEGIN
        INSERT INTO admin VALUES(5,'rose','0000');
  END $$
  #调用存储过程
  CALL myp() $$
 #2.创建带in模式参数的存储过程
  CREATE PROCEDURE myp2(IN beautyName VARCHAR(20))
  BEGIN
       SELECT bo.*
       FROM boys bo
       RIGHT JOIN beauty b ON bo.id=b.boyfriend_id
       WHERE b.name=beautyName;
  END $$
  #调用
  CALL myp2('柳岩')$$
  #3.创建存储过程实现,用户是否登录成功
  CREATE PROCEDURE myp4(IN username VARCHAR(20),IN PASSWORD VARCHAR(20))
  BEGIN
       DECLARE result INT DEFAULT 0 ;#创建变量并初始化
       SELECT COUNT(*) INTO result #赋值
       FROM admin
       WHERE admin.`username`=username
       AND admin.`password`=PASSWORD;
       SELECT IF(result>0,'成功','失败');#使用
 END $$
 CALL myp4('张飞','8888')$$
 #4.创建带out模式的存储过程
 CREATE PROCEDURE myp5(IN beautyName VARCHAR(20),OUT boyName VARCHAR(20))
 BEGIN 
      SELECT bo.boyName
      FROM boys bo
      INNER JOIN beauty b ON bo.id=b.boyriend_id
      WHERE b.name=beautyName;
END $$
SET @bname$$#创建变量接收返回值
CALL myb5('小昭',@bname)$$#调用
SELECT @bename$$
#5.创建带inout的存储过程
CREATE PROCEDURE myp6(INOUT a INT,INOUT b INT)
BEGIN 
     SET a=a*2;
     SET b=b*2;
END $$
SET @m=10$$
SET @n=20$$
CALL myp6(@m,@n)$$
SELECT @m,@n$$

3.删除存储过程

DROP PROCEDURE 存储过程

4.查看存储过程信息

SHOW CREATE PROCEDURE myp2;

二:函数

含义与存储过程一致
区别:存储过程返回值不限
           函数返回值有且仅有1个
创建语法:create function 函数名(参数列表) returns 返回类型
                  begin
                        函数体(需要包含return语句)
                  end
调用函数:select 函数名(参数列表)

#1.无参有返回
CREATE FUNCTION myf1() RETURNS INT
BEGIN
      DECLARE c INT DEFAULT 0;#变量声明
      SELECT COUNT(*) INTO c#变量赋值
      FROM `employees`;
      RETURN c;#变量调用
END $$
SELECT myf1()$$
#2.函数查看
SHOW CREATE FUNCTION myf1;
#3.删除函数
DROP FUNCTION myf1;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值