文档章节

MySQL:存储过程示例

康师傅
 康师傅
发布于 06/20 17:24
字数 624
阅读 16
收藏 0

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;

© 著作权归作者所有

康师傅
粉丝 2
博文 32
码字总数 18096
作品 0
昆明
后端工程师
私信 提问
创建带 IN 和 OUT 参数的 MySQL 存储过程

在 MySQL 中创建储存过程的语法很难记,除非你经常跟储存过程打交道,原因很简单,语法不是什么小笑话。如果你通过命令行控制 MySQL,你需要记住准确的语法。一个快速示例可以很好的帮助你做...

oschina
2013/03/12
11.2K
7
数据库-mysql用户权限和管理

一、Mysql权限列表 二、Mysql用户权限管理操作 1. 权限查询: (1)查看mysql的所有用户及其权限: select * from mysql.userG; #(格式化显示) (2)查看当前mysql用户权限: show grants;...

羊草
2018/08/16
0
0
九、MySQL存储过程和函数

存储过程就是一条或者多条SQL语句的集合,可视为批文件,但是其作用不仅限于批处理。 9.1、创建存储过程和函数 存储程序可以分为存储过程和函数,MySQL中创建存储过程和函数使用的语句分别是...

运维菜鸟丶
2017/08/04
0
0
mysql存储过程整理

1、存储过程的简介: 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用...

世界和平维护者
2016/10/16
26
0
mysql的数据储存过程入门小结

Mysql是网站里最常用的数据库(LNMP组合)。这里总结下Mysql命令行的使用同时简单介绍下mysql储存过程做个入门介绍。 1.Linux登录mysql的语法格式 mysql -h IP -u username -p 因为在本机上,...

熊猫88
2015/12/31
59
0

没有更多内容

加载失败,请刷新页面

加载更多

Protocol Buffers 简介

文档编辑和持续集成状态: 本文档的 Protocol Buffer 的中文文档使用的是 Asciidoctor 进行编排的 http://docs.ossez.com/protocol-buffers-docs/index.html(本 WIKI 中的内容将会与在线发布...

honeymoose
今天
3
0
uniapp + bootstrapvue 移动/PC 一套搞定 (一)配置bootstrapvue

1.准备文件 自己到DCloud官网: http://dcloud.io/ 去下载官方的IDE Hbuilder,新建一个空的uniapp项目即可。 uniapp框架自带优化的vue,我们仅仅需要准备以下三个文件: bootstrap.min.css ...

panyunxing
今天
11
0
Android Camera原理之camera service类与接口关系

camera service主要是指 frameworks/av/services/camera/下面的代码,最近在看这一块的代码,为了更好地理清这一块的代码,也为了后续学习camera方便一些,我觉得很有必要理一下这一块的整体...

天王盖地虎626
今天
6
0
Golang学习笔记

[TOC] Golang学习笔记 这个学习笔记是最早在1.初,版本左右的时候写的,和当前最新的版本可能会有较大的差异. 因为成文比较早,文章里面又有很多自己的见解,有些东西当时理解的不太透彻可能写错...

我爱吃炒鸡
今天
18
0
科技赋能成效显著!金融壹账通两大赋能项目荣获IDC大奖

7月19日,2019IDC中国未来金融论坛曁颁奖典礼于北京举办。由金融壹账通赋能的长春农商银行多人视频面审智能风控系统、包头农商银行互联网银行SaaS服务两大项目因在项目的创新性、技术领先性、...

IFTNews
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部