mysql返回李连杰的姓_Mysql-学习笔记(==》存储过程 九)

1、存储过程概念

在大型数据库系统中,一组为了完成特定功能的sql语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。

2、建立存储过程

delimiter//

create procedure 过程名(参数名 参数类型)

begin

存储过程要执行的语句;

end//

delimiter;

建立添加数据的存储过程

修改数据的存储过程

删除...

查询...

某些项目众的业务处理的存储过程

3、存储过程使用的语句

if then

end if;

while do

end while;

repeat 循环语句 1+2+3+4+...+100=5050;

case switch

调用存储过程

call 过程名(实参表)

删除存储过程

drop procedure 过程名;

------------------------------------

USE db;

CREATE TABLE sss(

sid INT UNSIGNED NOT NULL AUTO_INCREMENT,

sname VARCHAR(10) NOT NULL,

sscore TINYINT UNSIGNED,

saddress VARCHAR(30),

stel BIGINT UNSIGNED,

PRIMARY KEY(sid)

)ENGINE=MYISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

INSERT INTO sss VALUES(NULL,'甄子丹',90,'北京',18298375932);

INSERT INTO sss VALUES(NULL,'李连杰',50,'湖北省武汉市',18298375932);

INSERT INTO sss VALUES(NULL,'杨幂',20,'上海',18298375932);

INSERT INTO sss VALUES(NULL,'李晨',30,'济南',18298375932);

SELECT * FROM sss;

成绩在20-59之间的加分

地址包含哪个地区的字符的 加多少分

-- 查看db数据库中所有的存储过程信息

SHOW PROCEDURE STATUS WHERE Db='db';

CALL sssadd(6);-- 传参数(相当于调用方法)

-- 建立存储过程(相当于java的类)

DELIMITER//

CREATE PROCEDURE sssadd(i INT)

BEGIN

DECLARE sc TINYINT;

DECLARE sd VARCHAR(30);

SELECT sscore, saddress INTO sc,sd FROM sss WHERE sid=i;

IF sc>=20 AND sc<60 THEN

IF sd LIKE '%上海%' THEN

UPDATE sss SET sscore=sscore+1 WHERE sid=i;

END IF;

IF sd LIKE '%济南%' THEN

UPDATE sss SET sscore=sscore+5 WHERE sid=i;

END IF;

END IF;

END//

DELIMITER;

DROP PROCEDURE sssadd;

-- 另外一种if then.. elseif... then else... end if

DELIMITER//

CREATE PROCEDURE sssadd(i INT)

BEGIN

DECLARE sc TINYINT;

DECLARE sd VARCHAR(30);

SELECT sscore, saddress INTO sc,sd FROM sss WHERE sid=i;

IF sc>=20 AND sc<60 THEN

IF sd LIKE '%上海%' THEN

UPDATE sss SET sscore=sscore+1 WHERE sid=i;

ELSEIF sd LIKE '%济南%' THEN

UPDATE sss SET sscore=sscore+5 WHERE sid=i;

ELSE

UPDATE sss SET sscore=sscore+3 WHERE sid=i;

END IF;

END IF;

END//

DELIMITER;

-- 条件循环 declare 声明变量 set 设置变量

DELIMITER//

CREATE PROCEDURE ddd()

BEGIN

DECLARE n INT;

SET n=0;

SET @x=0;

REPEAT

SET @x=@x+1;

SET n=n+1;

UNTIL n>100 END REPEAT;

END//

DELIMITER;

DROP PROCEDURE ddd;

CALL ddd();

SELECT @x;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值