• day14:存储过程


    存储过程

    存储过程:类似于Java中的方法

    好处:1、提高代码的重用性   2、简化操作  3、减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率

    含义:一组预先编译好的SQL语句的集合,可以理解成批处理语句

    一、创建语法

    create  procedure  存储过程名(参数列表)  

    begin

      存储过程体(一组合法的SQL语句)

    end;

    注意:

    1、参数列表包含三部分:参数模式    参数名   参数类型

    例如:  IN  stuname  varchar(20)

    参数模式:

    IN  :该参数可以作为输入,也就是该参数需要调用方传入值

    OUT  :该参数可以作为输出,也就是该参数可以作为返回值

    INOUT :该参数既可以作为输入又可以作为输出,也就是该参数既需要传入值,又可以返回值

    2、如果存储过程体仅仅只有一句话,begin   end可以省略,存储过程体中的每条SQL语句的结尾要求必须加分号。

    存储过程的结尾可以使用delimiter 重新设置

     语法:delimiter  结束标记            例如:delimiter  $

     

    二、调用语法

    call  存储过程名(实参列表);

    新建admin表

    create table admin(
        id int primary key auto_increment,
        aname varchar(55),
        pwd varchar(55)
    );
    
    insert into admin(aname,pwd) values('张三','123456');

      

    1、空参列表

    例如:向admin表中插入5条记录

    a、新建存储过程myp1

    create procedure myp1()
    BEGIN
        insert into admin(aname,pwd) values('李四','123456'),
        ('王五','123456'),('赵六','123456'),('张龙','123456'),
        ('赵虎','123456');
    END;

    如果出现不支持存储过程体和存储过程结束同时有分号,则创建如下:

    delimiter $
    create procedure myp1()
    BEGIN
        insert into admin(aname,pwd) values('李四','123456'),
        ('王五','123456'),('赵六','123456'),('张龙','123456'),
        ('赵虎','123456');
    END $

    b、调用存储过程myp1

    call myp1();

    2、创建带in模式参数的存储过程

    例如:创建存储过程实现,根据部门名,查询对应的所有员工的信息

    create procedure myp2(in depName varchar(55))
    BEGIN
        select * from employee e where e.departmentid=
        (select id from department where dname=depName);
    end;

    调用

    call myp2('技术部');

    3、创建带out模式的存储过程

    例如:创建存储过程体,根据员工名,查询对应的部门名称

    create procedure myp3(in ename varchar(55),out dname varchar(55))
    BEGIN
        select d.dname into dname
        from department d where d.id=
        (select departmentid from employee e where e.ename=ename);
    end;

    调用

    call myp3('张三',@dname);
    select @dname;

    4、创建带inout模式参数的存储过程

    例如:传入a和b两个值,最终a和b都翻倍并返回

    create procedure myp4(inout a int,inout b int)
    BEGIN
        set a=a*2;
        set b=b*2;
    end;

    调用

    set @a=5;
    set @b=8;
    CALL myp4(@a,@b);
    select @a,@b;

    三、删除存储过程

    语法:drop  procedure  存储过程名

    例如:删除存储过程myp1;

    drop procedure myp1;

    四、查看存储过程的信息

    例如:查看存储过程myp2的信息

    show create procedure myp2;
  • 相关阅读:
    QQ 2006 正式版协议变动情况分析
    开源3D方面的软件
    要使silverlight能够在IIS中顺利运行,需要设置的东西.
    文本框回车自动提交
    No installed Service named "Apache2"
    Javascript:三个函数ceil()、floor()、round()的区别
    基于Apache的Svn服务器配置
    下载:HD AUDIO For XP SP3修正补丁
    ViewState在执行Refresh后丢失
    C#关闭应用程序时如何关闭子线程
  • 原文地址:https://www.cnblogs.com/wuguiyu/p/11771719.html
Copyright © 2020-2023  润新知