过程:封装了若干条语句,调用时,这些封装体执行

函数:是一个由返回值的’过程‘

过程是没有返回值的函数

我们把若干条sql封装起来,起个名字---过程

把此过程存储在数据库中------存储过程

存储过程的创建语法:

create procedure procedureName()

begin

-----sql语句;

end$

我们创建一个简单的存储过程:

create procedure p1()
begin
select 2+3
end$

调用存储过程:

call p1()$

存储过程是可以编程的,意味着可以使用变量,表达式,控制结构来完成复杂的功能

在存储过程中,用declare声明变量

格式:declare 变量名 变量类型[default 默认值]

create procedure p2()
begin
declare age int default 18;
declare height int default 180;
select concat('年龄是',age,'身高是',height);
end$

我们调用这个p2存储过程看看:

存储过程中,变量可以进行sql语句中的合法运算,如+-*/

注意的是,运算的结果如何赋值给变量:

set 变量名 := expression

create procedure p3()
begin
declare age int default 18;
set age :=age+20;
select concat('20年后年龄是',age);
end$

if/else 控制:

create procedure p4()
begin
declare age int default 18;
if age>=18 then
select '已成年';
else
select '未成年';
end if;
end$

可以看到我们的存储过程没有传参数,接下来我们就建立一个可以传参的存储过程:

传参的语法  [in/out/inout] 参数名 参数类型

create procedure p5(width int, height int)
begin
select concat('你的面积是',width*height)as area;
if width>height then
select '你挺胖';
elseif width<height then
select '你挺瘦';
else
select '你挺方';
end if;
end$

我们给里面传入参数(3,4):

我们都知道控制结构有三大类:顺序,选择和循环

我们现在来写一个带有循环控制结构的存储过程:

create procedure p6()
begin
declare total int default 0;
declare num int default 0;
while num<100 do
set num:=num+1;
set total:=total+num;
end while;
select total;
end$

上面的是我们输出1到100的和,接下来我们在p6的基础上稍作改进写一个p7:输入一个参数N,得到1到N的和:

create procedure p7(in N int)
begin
declare total int default 0;
declare num int default 0;
while num<N do
set num:=num+1;
set total:=total+num;
end while;
select total;
end$

in 表示我们是输入参数

我们接下来看输出参数:

create procedure p8(in n int,out total int)
begin
declare num int default 0;
set total:=0;
while num<n do
set num:=num+1;
set total:=total+num;
end while;
end$

其实out就是往外面输出参数,我们给个变量来接受它。

我们在看一下inout型参数:

create procedure p9(inout age int)
begin
set age:=age+20;
end$

在这里我们要先声明一个变量,然后调用存储过程,然后再输出它

MySQL存储过程01的更多相关文章

  1. MySQL 存储过程

    MySQL 存储过程 存储过程是通过给定的语法格式编写自定义的数据库API,类似于给数据库编写可执行函数. 简介 存储过程是一组为了完成特定功能的SQL语句集合,是经过编译后存储在数据库中. 存储过程 ...

  2. Mysql存储过程查询结果赋值到变量的方法

    Mysql存储过程查询结果赋值到变量的方法   把查询结果赋值到变量,大部分情况下使用游标来完成,但是如果明确知道查询结果只有一行(例如统计记录的数量,某个字段求和等),其实可以使用set或into的 ...

  3. mysql存储过程之异常处理篇

    mysql存储过程也提供了对异常处理的功能:通过定义HANDLER来完成异常声明的实现 语法如下: DECLARE handler_type HANDLER FOR condition_value[, ...

  4. Mysql存储过程知识,案例--mysql存储过程基本函数

    Mysql存储过程知识,案例: create procedure delete_setting(in p_settingid integer) begin delete from setting wh ...

  5. MySQL存储过程学习笔记

    MySQL在5.0以前并不支持存储过程,这使得MySQL在应用上大打折扣.MySQL 5.0终于开始支持存储过程了. MySQL的关键字大小写通用.该学习笔记对关键字使用大写:变量名,表名使用小写. ...

  6. MySQL存储过程带in和out参数

    MySQL存储过程带in和out参数 最简单的例子: [html] mysql> DELIMITER $$ mysql> USE test $$ Database changed mysq ...

  7. MYSQL存储过程和函数学习笔记

    学至Tarena金牌讲师,金色晨曦科技公司技术总监沙利穆课程笔记的综合. 1. 什么是存储过程和函数 将SQL语句放入一个集合里,然后直接调用存储过程和函数来执行已经定义好的SQL语句,通过存储过程和 ...

  8. mysql 存储过程的应用

    MySQL存储过程的创建   (1). 格式 MySQL存储过程创建的格式:CREATE PROCEDURE 过程名 ([过程參数[,...]]) [特性 ...] 过程体 这里先举个样例: mysq ...

  9. MySql存储过程的使用

    MySql存储过程跟sql server 有一定的区别,使用说明和步骤如下 使用说明 创建存储过程 MySQL中,创建存储过程的基本形式如下: CREATE PROCEDURE sp_name ([p ...

随机推荐

  1. Maya编程——沿Curve绘制圆柱

    操作流程: 1. VS运行代码,生成插件 2. 打开Maya绘制曲线,加载插件 3. 选中绘制的曲线,运行插件 Posts1.0 代码: #include <maya/MSimple.h> ...

  2. Unity2018安装

    1. 直接安装 2.  先安装Unity 2018.2.14f1 若有C:\ProgramData\Unity文件夹,删除这个文件夹下的所有文件 3. 解压 unity2018破解.zip 将最后一个 ...

  3. linux 下core文件生成、路径、格式设置及调试

    core文件生成及调试1 代码 #include<stdio.h> int main() { int *p = NULL; *p = 0; return 0; } 2 在当前shell执行 ...

  4. 【转载】嵌入式 Linux 移植 Dropbear SSH server

    0. 背景  OpenSSH因为其相对较大,一般不太适用于嵌入式平台,多用于PC或者服务器的Linux版本中.  Dropbear是一个相对较小的SSH服务器和客户端.它运行在一个基于POSIX的各种 ...

  5. 【ztree】获取根节点

    var node = treeObj.getNodesByFilter(function (node) { return node.level == 0 }, true);

  6. python快速开始一-------常见的数据类型

    前置条件:已经安装好python程序 常用的数据类型 Python常见的数据类型: 整数:就是我们数学里面的整数,比如3455,python目前支持最大的32bit或者64bit 长整数(long): ...

  7. PHP设计模式 - 解释器模式

    给定一个语言, 定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子. 角色: 环境角色(PlayContent):定义解释规则的全局信息. 抽象解释器(Empress):定 ...

  8. Java中参数始终是按值传递

    Java中参数始终是按值传递. public class Main { public static void main(String[] args) { int x = 5; change(x); S ...

  9. C++的菱形继承会发生什么问题?如何解决?画出其内存布局图

    菱形继承问题样例: #include <iostream> using namespace std; class A { public: ; virtual int getx() { re ...

  10. IDEA更改JavaScript版本

    最好改两个地方 File -> File -> -- --