• mysql 存储过程


    1..创建存储过程

    DELIMITER //  (创建过程前先要修改mysql的结束符为//)

    create procedure proc1()(创建一个存储过程,方法名为proc1())

    begin (存储过程开始)

    declare var int  default 100;(声明一个变量var 类型为int 类型 默认值为100)

    select var;(输出这个变量值)

    end// (存储过程结束)

    DELIMITER ;(结束后要把结束符修改回;)

    call proc1();(存储过程的调用)

    2.通过set关键字修改变量值

    DELIMITER //  (创建过程前先要修改mysql的结束符为//)

    create procedure proc1()(创建一个存储过程,方法名为proc1())

    begin (存储过程开始)

    declare var int  default 100;(声明一个变量var 类型为int 类型 默认值为100

    select var;(输出这个变量值)

    set var = var +10;(通过set关键字修改变量值)

     select  var ;

    end// (存储过程结束)

    DELIMITER ;(结束后要把结束符修改回;)

    call proc1();

    3.查询数据表中的指定数据

    DELIMITER //

    create procedure proc3()

    begin 

    declare var1 varchar(20);//声明类型为varchar 的变量var1

    declare var2 int ;//声明类型为int的变量var2

    //选择来自student数据表中ID为1中的name和age 两个字段中的数据放入var1和var2这两个变量中

    select name, age into var1,var2 from student where id =1;

    select var1 as '姓名' ,var2 as '年龄';//给变量var1取别名为姓名,var2取别名“年龄”

    end //

    DELIMITER ;

    call proc3();

    4.存储过程中的油标使用

    DELIMITER //

    create procedure proc4()

    begin 

    declare var1 varchar (20);

    declare var2 int ;

     //声明一个游标变量用来存储student 数据表中指定的数据值

    declare getNameAge_Stu1 cursor for select name,age from student where id = 1;

    open getNameAge_Stu1;//打开游标变量

    fetch getNameAge_Stu1 into var1,var2;// 获取游标变量中的数据放入var1,和var2这两个变量中。顺序为查询数据的顺序

    close getNameAge_Stu1;//关闭游标

    select var1 as '姓名' ,var2 as '年龄';//为变量取别名并输出

    end //

    DELIMITER ;

    call proc4();

    5.存储过程中的流程控制(if 语句)

    DELIMITER //
    create procedure proc5()
    begin
    declare var int;
    if var is null then select 'var is null';//如果变量var为null 就输出var is null 
    else select 'var is not null';//否则输出var is not null 
    end if;//结束if语句
    end //(结束创建过程)
    DELIMITER ;

    call proc5();//调用存储的过程

    6.存储过程中的流程控制(case 语句)

    DELIMITER //
    create procedure proc6()
    begin
    declare var int default 1;//声明一个int 类型的变量var 默认值为1
    case var

    //当变量var 为1的时候就输出数据表student 中ID为1的数据
    when 1 then select * from student where id =1;

    //当变量var 为2的时候就输出数据表student 中ID为2的数据
    when 2 then select * from student where id =2;

    如果var 即不为1也不为2的时候就输出数据表student中的所有数据
    else select * from student ;

    end case;//结束case
    end // (结束过程)
    DELIMITER ;

     7.存储过程中的流程控制(loop 循环语句)

    DELIMITER //
    create procedure proc7()
    begin
    declare var int default 1;//声明一个int 类型的变量var 默认值为1

    //循环(loop)选择(select)来自数据表student中ID为变量为var的数据
    myloop:loop select * from student where id = var;

    当变量var>=3的时候就离开这个循环myloop
    if var >=3 then leave myloop;

    end if;//结束if 条件
    set var =var+1;(通过set关键字修改变量值)
    end loop;//结束循环
    end //
    DELIMITER ;

    8. 存储过程中的流程控制(repeat 循环语句)

    DELIMITER //
    create procedure proc8()
    begin
    declare var int default 1;

    //重复(repeat)插入(insert)值(values)(null,'Jack',12,'男')到数据表(student)中
    repeat insert student values (null,'Jack',12,'男');
    set var = var + 1;(通过set关键字修改变量值)

    //直到(until)变量var>=5的时候结束重复插入
    until var >= 5 end repeat;
    end //
    DELIMITER ;

    9。存储过程中的流程控制(while 循环语句)

    DELIMITER //
    create procedure proc9()
    begin
    declare var int default 1;//声明一个int 类型的变量var 默认值为1

    //var 变量小于4
    while var <4  

    //就插入数据(null,'翠华',18,'女') 到student中
    do insert student values (null,'翠华',18,'女');
    set var = var +1;

    //结束while循环
    end while;
    end //
    DELIMITER ;

    10.查看存储过程

    show create procedure  proc9;

    11.删除数据表中的数据

    delete form student where id>5;

    列:用过程删除数据

     create procedure proc()

    -> begin
    -> delete from student where id>5;
    -> end //

    12.查看存储过程

     show procedure  status  like '%proc';

    show create procedure proc9;

    13.修改存储过程

    只能修改存储过程的特性,不能修改存储过程的代码。(实际开发不常用,)

    如果一定要修改,就先删除在新建存储过程。(实际的开发中常用)

    14.删除存储过程

    drop  procedure (或者 function ) proc9;

    15.显示数据表中的所有存储过程

    show procedure  status like 'proc%';

  • 相关阅读:
    SDNU 1219.sign up problem
    SDNU 1232.A*B Problem(高精度)
    Go操作MySQL
    BootStrap jQuery 在线cdn
    Go语言标准库之http/template
    Go语言基础之net/http
    Go语言基础之网络编程
    Go语言基础之单元测试
    Go语言基础之rand(随机数)包
    Go语言基础之并发
  • 原文地址:https://www.cnblogs.com/sbj-dawn/p/6934901.html
Copyright © 2020-2023  润新知