当前位置:Gxlcms > 数据库问题 > Mysql存储过程

Mysql存储过程

时间:2021-07-01 10:21:17 帮助过:2人阅读

TABLE IF EXISTS `t_user`; CREATE TABLE `t_user` ( `ID` int(11) NOT NULL, `USERNAME` varchar(16) NOT NULL, `CITY` varchar(10) CHARACTER SET utf8 DEFAULT NULL, `PHONE` varchar(10) DEFAULT NULL, PRIMARY KEY (`ID`), UNIQUE KEY `name_city_phone` (`USERNAME`,`CITY`,`PHONE`), KEY `U_INDEX` (`USERNAME`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- ---------------------------- -- Records of t_user -- ---------------------------- INSERT INTO `t_user` VALUES (4, Jack, 深圳, 185); INSERT INTO `t_user` VALUES (3, Jerry, 北京, 181); INSERT INTO `t_user` VALUES (1, parry, 广州, 180); INSERT INTO `t_user` VALUES (2, Tom, 上海, 189);

技术分享

5、Mysql存储过程

  (1)创建存储过程

CREATE PROCEDURE P_NAME()
BEGIN
    ......
END

  (2)调用存储过程

CALL P_NAME() // 存储过程名称(P_NAME)后面必须添加括号,即使没有参数

  (3)删除存储过程

DROP PROCEDURE P_NAME; //不能在一个存储过程中删除另一个存储古城,只能调用另一个存储过程

  (4)查看数据库里全部的存储过程

SHOW PROCEDURE STATUS

  (5)查看单个存储过程的详细信息

SHOW CREATE PROCEDURE P_NAME

6、创建存储过程详解

  (1)简单的无参存储过程(查询所有的结果集)

DROP PROCEDURE IF EXISTS P_user;
CREATE PROCEDURE P_user()
BEGIN
    SELECT * FROM t_user;
END;

  调用:CALL P_user();

  技术分享

  (2)带参存储过程

    MySQL存储过程的参数用在存储过程的定义,共有三种参数类型,IN,OUT,INOUT,形式如:

    CREATE PROCEDURE([[IN |OUT |INOUT ] 参数名 数据类形...])

    a.IN参数

技术分享
/*创建存储过程*/
DROP PROCEDURE IF EXISTS P_user;
CREATE PROCEDURE P_user(IN t_id VARCHAR(10))
BEGIN
        SELECT * FROM t_user WHERE ID = t_id;
END;
/*调用存储过程*/
CALL P_user(1);
View Code

      技术分享

    b.OUT参数

技术分享
/*创建存储过程*/
DROP PROCEDURE IF EXISTS P_user;
CREATE PROCEDURE P_user(IN t_id VARCHAR(10),OUT uCount INT)
BEGIN
        SELECT COUNT(*) FROM t_user WHERE ID = t_id;
END;
/*调用存储过程*/
CALL P_user(4,@p_num);
SLEEP(@p_num)
View Code

    技术分享

    c.INOUT参数(参数是入参也是出参)

技术分享
/*创建存储过程*/
DROP PROCEDURE IF EXISTS P_user;
CREATE PROCEDURE P_user(INOUT t_id VARCHAR(10))
BEGIN
        SELECT COUNT(*) FROM t_user WHERE ID = t_id;
END;
/*调用存储过程*/
SET @p_num = 4;
CALL P_user(@p_num);
SELECT @p_num;
View Code

    技术分享

人气教程排行