加入收藏 | 设为首页 | 会员中心 | 我要投稿 武汉站长网 (https://www.027zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

mysql5.7存储过程实例_MySQL 存储过程简单实例

发布时间:2023-01-08 10:01:27 所属栏目:MsSql教程 来源:转载
导读: 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

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;

(编辑:武汉站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章