• MySQL基础-存储过程


    存储过程

    定义:将一批为了完成特定功能的SQL语句集,根据传入的参数(也可没有),调用,完成单个sql语句更复杂的功能

    存储过程思想很简单,就是SQL语句层面上的代码封装和重用

    优点:1) 可封装,并隐藏复杂的业务逻辑;2) 可回传值,且可接受参数

    缺点:因支持的编程语言不通,性能调校和撰写,受限于各种数据库系统

    创建存储过程示例

    delimiter $$
    -- 创建存储过程
    create procedure p_user(
    	int m int,		-- in 表示该参数是传入参数,不能当作返回值
        int n int,
        out res int		-- out 表示该参数是返回参数,只能作为返回值,不用于接收
        				-- inout 表示既可以接收传入的值也可以当作返回值
    )
    begin
    	select username from user_info where uid between m and n;
    	set res=0;
    end $$
    delimiter ;
    
    -- 1.在mysql中调用
    set @res=10
    call p_user(2,4,10);   -- 该语句报错
    call p_user(2,4,@res)  -- 正确的调用方式
    select @res;    -- 执行成功,@res变量的值发生改变
    
    -- 2.在python中调用
    pymysql连接mysql
    获取到游标对象cursor
    通过游标对象cursor.callproc('p_user',(2,4,10))  
    # 参数内部原理:@_p_user_0=2,@_p_user_1=4,@_p_user_2=10
    游标对象cursor.execute('select @_p_user_2;')
    # 如果值发生改变,说明执行成功
    
  • 相关阅读:
    DShow实现一个avi视频的播放(含有个人解释和注释)
    指针和引用的区别
    从头看算法导论 习题2.3-7 深入分析
    程序员福利各大平台免费接口,非常适用
    NYOJ 58 最少步数
    NYOJ 42 一笔画问题
    NYOJ 1058 部分和问题
    NYOJ 21 三个水杯
    winform里面网页显示指定内容
    C#中List<T>对象的深度拷贝问题
  • 原文地址:https://www.cnblogs.com/xiaodan1040/p/12056528.html
Copyright © 2020-2023  润新知