zoukankan      html  css  js  c++  java
  • MySQL存储过程

    MySQL存储过程

    返回首页

    1、MySQL存储过程

    存储过程就是保存在MySQL上的一个别名,这个别名代指的是一些SQL语句。

    使用别名就可以查到结果。

    2、存储过程的语法:create procedure 别名()

    delimiter //
    create procedure p1()
    bing
        select * from student;
        insert into teacher(tname) values('geroge');
    end //
    delimiter ;

    3、视图的别名调用是当做一张表来调用,而存储过程的别名是当做一个函数一样调用。

       存储过程的别名是用来代替程序员写SQL语句的。

    4、存储过程的调用:call p1(); 

    5、pymysql调用方法:cursor.callproc('p1') 这样就可以执行p1了。

               拿到callproc('p1') 的结果用result = cursor.fetchall() 

    6、给存储过程传参数:

      传参数必须加关键字:in、out、inout

    delimiter //
    create procedure p2(
      in n1 int,
      in n2 int ) bing select
    * from student where id>n1; insert into teacher(tname) values('geroge'); end // delimiter ;

    call p2(12,2)
    cursor.callproc('p2',(12,2)) #在pymysql中,调用有参数的存储过程p2。

       out的用法:可以拿到返回集。

    delimiter //
    create procedure p2(
      in n1 int,
      out n2 int
    ) 
    bing
        select * from student where id>n1;
        set n2 = 123123;
    end //
    delimiter ;
    
    
    set @v1 = 0;
    call p2(12,@v1)
    select @v1;

    cursor.execute('select @_p2_0,@_p2_1') #在pymysql中,拿到结果集。

     7、事务

    delimiter //
    create procedure p3(
        out status int   
    )
    being
        declare exit handler for sqlexception
        being
            -- error
            set status =1;
            rollback;
        end;   
    
        start transaction;
            delete from tb1;
            insert into tb2(name) values('seven');
        commit;
    
        -- success
        set status = 2;
    end //
    delimiter ;
        

    ----- END -----

  • 相关阅读:
    第一周实习工作总结
    service---七月十九号实验
    安卓常用链接
    Activity + 基础UI
    七月十四日安卓学习笔记
    安卓组件学习笔记
    剑指:数组中出现次数超过一半的数字
    剑指:二叉搜索树与双向链表
    剑指:二叉树中和为某一值的路径
    剑指:二叉搜索树的后序遍历序列
  • 原文地址:https://www.cnblogs.com/george92/p/15092776.html
Copyright © 2011-2022 走看看