最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

mysql存储过程的应用

来源:动视网 责编:小采 时间:2020-11-09 08:30:53
文档

mysql存储过程的应用

mysql存储过程的应用:欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入 MySQL存储过程的创建 (1)。 格式 MySQL存储过程创建的格式:CREATE PROCEDURE 过程名 ([过程参数[,…]]) [特性 …] 过程体 这里先举个例子: mysql DELIMITER // mysql
推荐度:
导读mysql存储过程的应用:欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入 MySQL存储过程的创建 (1)。 格式 MySQL存储过程创建的格式:CREATE PROCEDURE 过程名 ([过程参数[,…]]) [特性 …] 过程体 这里先举个例子: mysql DELIMITER // mysql


欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入 MySQL存储过程的创建 (1)。 格式 MySQL存储过程创建的格式:CREATE PROCEDURE 过程名 ([过程参数[,…]]) [特性 …] 过程体 这里先举个例子: mysql DELIMITER // mysql CREATE PROCEDURE proc1(

欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入

  MySQL存储过程的创建

  (1)。 格式

  MySQL存储过程创建的格式:CREATE PROCEDURE 过程名 ([过程参数[,…]])

  [特性 …] 过程体

  这里先举个例子:

  mysql> DELIMITER //

  mysql> CREATE PROCEDURE proc1(OUT s int)

  -> BEGIN

  -> SELECT COUNT(*) INTO s FROM user;

  -> END

  -> //

  mysql> DELIMITER ;

  注:

  (1)这里需要注意的是DELIMITER //和DELIMITER ;两句,DELIMITER是分割符的意思,因为MySQL默认以";"为分隔符,如果我们没有声明分割符,那么编译器会把存储过程当成SQL语句进行处理,则存储过程的编译过程会报错,所以要事先用DELIMITER关键字申明当前段分隔符,这样MySQL才会将";"当做存储过程中的代码,不会执行这些代码,用完了之后要把分隔符还原。

  (2)存储过程根据需要可能会有输入、输出、输入输出参数,这里有一个输出参数s,类型是int型,如果有多个参数用","分割开。

  (3)过程体的开始与结束使用BEGIN与END进行标识。

  这样,我们的一个MySQL存储过程就完成了,是不是很容易呢?看不懂也没关系,接下来,我们详细的讲解。

  下面的例子主要用到了

  Ⅰ。 if-then -else语句

  Ⅰ。 FOUND_ROWS() 语句

  #记录每天的步行、睡眠、体重、消耗卡路里等信息

  #userRecordDetail 表中,如果存在当天数据,则修改,否则新增

  #userRecord 表中,如果存在,则累加,否则新增

  #类型:1步行2睡眠3卡路里消耗4体重

  #CALL userRecord_create(1001,45,100,1000,1000,500,500,2,1);

  DROP PROCEDURE IF EXISTS pro_userRecord_stepNum;

  DELIMITER //

  CREATE PROCEDURE pro_userRecord_stepNum(IN p_userId INT,IN p_stepNum INT)

  BEGIN

  DECLARE RCount INT;

  -- 查看用户是否有详细记录

  SELECT id FROM userRecordDetail WHERE userId = p_userId AND DATE(createTime) = CURDATE() LIMIT 1;

  SELECT FOUND_ROWS() INTO RCount;

  IF (RCount=0) THEN

  -- 查看userRecord是否有用户总记录信息,不存在,则添加,否则修改

  SELECT id FROM userRecord WHERE userId = p_userId LIMIT 1;

  SELECT FOUND_ROWS() INTO RCount;

  IF(RCount = 0 )THEN

  INSERT INTO `userRecord`(`userId`,`totalStep`,`updateTime`,`createTime`)

  VALUES (p_userId,p_stepNum,NOW(),NOW());

  ELSE

  UPDATE userRecord SET totalStep = totalStep+p_stepNum WHERE userId = p_userId;

  END IF; -- 结束

  -- 插入一条用户记录详细信息

  INSERT INTO `userRecordDetail`(`weigh`,`calorie`,`stepNum`,`userId`,

  `sleepTimes`,`lightSleepTimes`,`heavySleepTimes`,

  `wakeupNum`,`updateTime`,`createTime`)

  VALUES (0,0,p_stepNum, p_userId,0,0,0,0,NOW(),NOW());

  ELSE

  -- 查看是否有用户总记录信息,不存在,则添加,否则修改

  SELECT id FROM userRecord WHERE userId = p_userId LIMIT 1;

  SELECT FOUND_ROWS() INTO RCount;

  IF(RCount = 0 )THEN

  INSERT INTO `userRecord`(`userId`,`totalStep`,`updateTime`,`createTime`)

  VALUES (p_userId,p_stepNum,NOW(),NOW());

  ELSE

  UPDATE userRecord SET totalStep = totalStep + p_stepNum WHERE userId = p_userId;

  END IF;

  -- 修改userRecordDetail

  UPDATE userRecordDetail SET stepNum = stepNum + p_stepNum WHERE userId = p_userId;

  END IF;

  END;//

[1] [2] [3]

文档

mysql存储过程的应用

mysql存储过程的应用:欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入 MySQL存储过程的创建 (1)。 格式 MySQL存储过程创建的格式:CREATE PROCEDURE 过程名 ([过程参数[,…]]) [特性 …] 过程体 这里先举个例子: mysql DELIMITER // mysql
推荐度:
标签: 进入 使用 过程
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top