MySQL:存储过程示例
时间: 2019-06-20来源:OSCHINA
前景提要
「深度学习福利」大神带你进阶工程师,立即查看>>>
MySQL 存储过程简单实例
==============================
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 ;
# 调用存储过程,这里需要先设置一个已赋值的变量,然后再作为参数传入,同时也作为输出参数
SET @pp = 5;
CALL p6(@pp);
SELECT @pp;

科技资讯:

科技学院:

科技百科:

科技书籍:

网站大全:

软件大全:

热门排行