mysql5.7存储过程实例_MySQL 存储过程简单实例
CREATE DATABASE procdb DEFAULT CHARSET utf8;
USE procdb;
2、创建要使用的表
CREATE TABLE tb
(
id INT PRIMARY KEY NOT NULL,
cname VARCHAR(20)
);
INSERT INTO tb
1、创建实例数据库 CREATE DATABASE procdb DEFAULT CHARSET utf8; USE procdb; 2、创建要使用的表 CREATE TABLE tb ( id INT PRIMARY KEY NOT NULL, cname VARCHAR(20) ); INSERT INTO tb VALUES (1,'统一方便面'), (2,'康师傅方便面'), (3,'马老表方便面'), (4,'王老吉方便面'); SELECT * FROM tb; 3、创建一个最简单的存储过程 DELIMITER $$ CREATE PROCEDURE p1() BEGIN SELECT id,cname FROM tb; END$$ DELIMITER ; #调用存储过程p1 CALL p1(); ################ DELIMITER $$ CREATE PROCEDURE p2() BEGIN #declare @dt int; ##使用临时变量不用声明数据类型 SET @dt =CURDATE(); SELECT CONCAT(YEAR(@dt),'年',MONTH(@dt),'月',DAY(@dt),'日') ; END$$ DELIMITER ; #调用存储过程P2 CALL p2(); 4、创建一个带传入参数的存储过程 DROP PROCEDURE IF EXISTS p3; DELIMITER $$ CREATE PROCEDURE p3(IN aid INT) COMMENT '向表中插入一条记录' BEGIN ##定义一个整形变量 DECLARE v1 INT; ##将输入参数的值赋给变量 SET v1 = aid; ##执行插入操作 INSERT INTO tb(id,cname) VALUES(v1,CONCAT('第',v1,'条记录')); END$$ DELIMITER ; ##调用存储过程,使用一个参数,就会在表中插入一条记录 CALL p3(99); SELECT * FROM tb; 5、带输出参数的存储过程 DROP PROCEDURE IF EXISTS p4; DELIMITER $$ CREATE PROCEDURE p4(OUT ret INT) COMMENT '输出表中id的最大值' BEGIN DECLARE maxid INT; SELECT MAX(id) INTO maxid FROM tb; SET ret=maxid; END$$ DELIMITER ; #调用存储过程 CALL p4(@maxno); SELECT @maxno; #查看临时变量@maxno 6、带输入输出参数的存储过程 DROP PROCEDURE p5; DELIMITER $$ CREATE PROCEDURE p5(IN p1 INT , OUT p2 INT) COMMENT '带输入输出参数的存储过程' BEGIN IF p1 = 1 THEN #用@符号加变量名的方式定义一个变量,与declare类似 SET @v = 10; ELSE SET @v = 20; END IF; #语句体内可以执行多条sql,但必须以分号分隔 INSERT INTO tb(id,cname) VALUES(@v,CONCAT('第',@v,'条记录')); SELECT MAX(id) INTO p2 FROM tb; END$$ DELIMITER ; #调用存储过程 CALL p5(2,@maxid); SELECT * FROM tb; SELECT @maxid; 7、既做输入又做输出参数的存储过程 DROP PROCEDURE IF EXISTS p6; DELIMITER $$ CREATE PROCEDURE p6(INOUT argument INT) COMMENT '既做输入又做输出参数的存储过程' BEGIN IF argument = 4 THEN SET @pg = 400; ELSE SET @pg = 500; END IF; SELECT @pg; SET argument=@pg; END$$ DELIMITER ; # 调用存储过程,这里需要先设置一个已赋值的变量,然后再作为参数传入Mssq存储过程,同时也作为输出参数 SET @pp = 5; CALL p6(@pp); SELECT @pp; (编辑:武汉站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |