存储过程(mysql 难懂)

|-----什么是存储过程?

简单的说,就是一组SQL语句集,功能强大,可以实现一些比较复杂的逻辑功能,类似于JAVA语言中的方法;

函数的普遍特性:模块化,封装,代码复用

|----语法结构

DELIMITER ;;


 DELIMITER ;

DELIMITER ;;

CREATE PROCEDURE  ups_pro1(IN a INT,IN b INT,OUT SUM INT)

BEGIN

  IF a IS NULL THEN SET a=0;

  END IF;

  IF b IS NULL THEN SET b=10;

  END IF;

  #赋值

  SET SUM=a+b;

END

;;

DELIMITER ;

|---调用  call 调用存储过程

#@s 就不需要定义,直接调用

#调用存储过程用call

SET @b=5;

CALL ups_pro1(2,@b,@s);

SELECT @s AS SUM;

|------@变量 : 接收存储过程的一个变量,这个变量是不需要定义!

|----select 字段 into()变量 from 表名;

#思考:如果调用数据表

DELIMITER ;;

CREATE PROCEDURE ups_test_02(IN id INT,OUT question_r VARCHAR(500))

BEGIN

         SELECT question INTO question_r FROM questioninfo WHERE questionid=id;     

END

;;

DELIMITER ;

 

CALL ups_test_02(1,@str);

SELECT @str AS 题干;

|---if then elseif then else end if;

DELIMITER ;;

CREATE PROCEDURE ups_pro2(IN tt INT)

BEGIN

         DECLARE c VARCHAR(200);

         IF tt=0 THEN SET c='this is param is 0';

         ELSEIF tt=1 THEN SET c='this is param is 1';

         ELSE SET c='this is param not know';

         END IF;

         SELECT c;

END

;;

DELIMITER ;

 

CALL ups_pro2(1);

DELIMITER ;;

CREATE PROCEDURE ups_test_05(IN id INT)

BEGIN

         DECLARE name_o VARCHAR(200);#定义的变量

         IF(id=1) THEN

                   SELECT question INTO name_o FROM questioninfo WHERE questionid=id;

         ELSEIF(id=2) THEN

                   SELECT question INTO name_o FROM questioninfo WHERE questionid=id;

         ELSE

                SET name_o='不知道!';

         END IF;

         SELECT name_o;

END

;;

DELIMITER ;

DELIMITER ;;

CREATE PROCEDURE ups_pro3(IN tt INT)

BEGIN

         DECLARE c VARCHAR(200);

         CASE WHEN tt=0 THEN SET c='this is param is 0';

              WHEN tt=1 THEN SET c='this is param is 1';

         ELSE SET c='this is param not know';

         END CASE;

         SELECT c;

END

;;

DELIMITER ;

 

CALL ups_pro3(100);

|----while循环

DELIMITER ;;

CREATE PROCEDURE ups_pro4(IN tt INT)

BEGIN

         DECLARE SUM INT;

         DECLARE i INT;

         SET SUM=0;

         SET i=0;

         WHILE i<tt DO

              SET SUM=SUM+i;

              SET i=i+1;

         END WHILE;

         SELECT SUM;

END

;;

DELIMITER ;




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

brid_fly

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值