MySQL 创建存储过程(PROCEDURE)

来源:互联网 发布:linux 创建进程 编辑:程序博客网 时间:2024/05/18 22:44
-- 创建一个存储过程模板DROP PROCEDURE IF EXISTS Proc_Module; -- 先删除即将要创建存储过程,需要校验是否存在,否则会报错DELIMITER ;;  -- 修改结束符,因为存储过程中会使用;作为结束符-- 创建存储过程,参数分IN/OUT/INOUT三类-- IN是输入参数,可以有多个-- OUT是输出参数,可以输出给调用该存储过程的应用进行参数引用,使用方式为CALL Proc_Module( dIN_Temp, @dOUT_Temp, @dINOUT_Temp)-- INOUT是输入输出参数,输出属性参见OUT参数CREATE PROCEDURE Proc_Module (IN dIN INT, OUT dOUT INT, INOUT dINOUT INT)BEGIN  DECLARE strTemp VARCHAR(128) CHARACTER SET utf8; -- 定义一个存储过程内的变量,可以通过设定字符集,在展示时保持编码一致性  DECLARE intTemp INT; -- 也可以不设定字符集  START TRANSACTION; -- 开始一个事务,一个存储过程可以存在多个事务,在COMMIT时结束  -- 进行相关插入操作  -- 直接使用传入的参数INSERT INTO dbname.tablename1 (field1, field2,...) SELECT field2_1, field2_2, dIN, dINOUT FROM dbname.tablename2 WHERE ...;  -- 通过SELECT INTO直接给变量赋值  SELECT CONCAT("剩余数量:",COUNT(1),"个"), COUNT(1) INTO strTemp, intTemp FROM dbname.tablename1 WHERE ...;  COMMIT; -- 事务提交,如果其中抛出异常则不进行提交,整个事务回滚,事务终止此  -- IF判断语句,组合为IF ... THEN ... ELSEIF ... THEN ... ELSE ... END IF  -- 示例如下  IF dIN = 0 THEN    SET strTemp = "请赋值"; -- 通过SET也可以给参数进行赋值    SET dINOUT=0; -- 为输入输出参数赋值  ELSEIF intTemp = 0 THEN    SET strTemp = "数量为空";    SET dINOUT=0;  ELSE    SELECT strTemp; -- 存储过程直接输出的内容  END IF; -- 结束IF判断  END;; -- 结束存储过程创建内容DELIMITER ; -- 修改结束符,恢复为;CALL Proc_Module( dIN_Temp, @dOUT_Temp, @dINOUT_Temp); -- 调用存储过程SELECT @dOUT_Temp, @dINOUT_Temp; -- 使用输出的参数

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 安全瓶盖坏了怎么办 刚买面霜打不开怎么办 可乐瓶盖鼓起来怎么办 暖壶塞子吸住了怎么办 茶兀瓶盖打不开怎么办 水杯盖太紧了拧不开怎么办 矿泉水瓶盖拧不开了怎么办 弩弦用手拉不上怎么办 茅台酒瓶口漏酒怎么办 化妆品盖子丢了怎么办 化妆品盖子碎了怎么办 自制水泵压力小怎么办 大学数学不会做怎么办 下雪了怎么办教案幼儿园小班 下水道被混凝土堵塞怎么办 日本足贴丢了胶布怎么办 牙齿被可乐腐蚀怎么办 三十岁满嘴无牙怎么办 水乳盖子打不开怎么办 蜂蜜罐子打不开了怎么办 蜂蜜盖子第二次拧不开怎么办 玻璃杯子拧不开盖子怎么办 玻璃杯水杯盖子拧不开怎么办 鞋子蝴蝶结掉了怎么办 蝴蝶翅膀受伤了怎么办 手被割了个口子怎么办 致炫方向盘重怎么办 黑檀7打不透怎么办 乒乓球底板太轻怎么办 狙击精英4卡怎么办 鼠标点一下变两下怎么办 工程干完不给钱怎么办 屋里有大蛾子怎么办 房间很多小飞虫怎么办 雷蛇键盘失灵怎么办 xp驱动 不支持win10怎么办 阿提拉全面战争统治度太低怎么办 微信号变成wxid怎么办 ipv4 ipv6未连接怎么办 土豆丝粘锅怎么办还面 土豆丝容易碎怎么办