• 13 MySQL--存储过程


    1、存储过程的介绍

      对于存储过程,可以接收参数,其参数有三类:
            in          仅用于传入参数用
            out         仅用于返回值用
            inout       既可以传入又可以当作返回值
    存储过程包含了一系列可执行的sql语句,存储过程存放于MySQL中,通过调用它的名字可以执行其内部的一堆sql。
            优点:
                1. 用于替代程序写的SQL语句,实现程序与sql解耦
                2. 基于网络传输,传别名的数据量小,而直接传sql数据量大
            缺点:
                1. 程序员扩展功能不方便
            补充:
                程序与数据库结合使用的三种方式
                #方式一:
                    MySQL:存储过程
                    程序:调用存储过程
                    评论:
                        应用程序与数据库解开耦合,效率高,发存储过程名就可以了,
                        但是实际情况:扩展性低,人为因素造成得!
                
                #方式二:
                    MySQL:
                    程序:纯SQL语句
                    评论:
                        通常用这种方式,运行效率低一些,但扩展性方便。
                        
                #方式三:
                    MySQL:
                    程序:类和对象,即ORM(本质还是纯SQL语句),Django框架里面有ORM框架,本质:应用程序控制sql
                    评论:
                        运行效率低,相比方式二,因为要转换,发送。
                        开发效率高,面向对象,可维护性高。           

    2、准备表

     创建存储过程

    无参数存储过程

    #1、无参存储过程
        delimiter //
        create procedure p1()
        BEGIN
            select * from db7.teacher;
        END //
        delimiter ;
    
    
        # MySQL中调用
        call p1();
    
    
        # Python中调用
        cursor.callproc('p1')
        

    # 在MySQL中调用 

    删除创建的存储过程:

    在pycharm开发环境中调用

     

    ((1, '张磊老师'), (2, '李平老师'), (3, '刘海燕老师'), (4, '朱云海老师'), (5, '李杰老师'))

    有参数存储过程

    #2、有参存储过程
    in n1 int,in n2 int,out res int
    in 指的是传入参数
    out 指的是传出参数
        delimiter //
        create procedure p2(in n1 int,in n2 int,out res int)
        BEGIN
            select * from db7.teacher where tid > n1 and tid < n2;
            set res = 1;
        END //
        delimiter ;
    
    
        # MySQL中调用
        # 设定初始值
        set @x=0
        call p2(2,4,@x);
        select @x;
    
        # Python中调用
        cursor.callproc('p2',(2,4,0))# @_p2_0=2,@_p2_1=4,@_p2_2=0
        cursor.execute('select @_p3_2')
        cursor.fetchone()

     # MySQL中调用# 设定初始值

     

     在pycharm开发环境中 

    ((3, '刘海燕老师'),)
    (1,)

    删除存储过程drop procedure proc_name;

  • 相关阅读:
    Asp.net读取AD域信息的方法(一)
    登录时记住用户名和密码及cookie案例应用
    Web项目,要求:保存用户名和密码在Cookie中,下次登录不再重新输入
    ASP.net 学习路线(详细)
    vs调试技巧(二)
    vs断点调试技巧(一)
    flexPaper +swftools实现文档在线阅读
    OC 类 的声明
    OC extern和函数
    OC extern和变量
  • 原文地址:https://www.cnblogs.com/foremostxl/p/9771273.html
Copyright © 2020-2023  润新知