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


    在Navicat里面可以直接在界面上操作创建存储过程

    这个都很直观,点击新建函数,会弹出对话框,要你选择是创建存储过程还是函数,根据本人的理解,存储过程和函数的区别网上的解释很多,如果大家不知道在哪看,我推荐一篇帖子
    http://topic.csdn.net/t/20030806/16/2116067.html
    看完之后该创建那个就很清楚了。这里只解释存储过程选择过程后,会出现要填写的参数。
    参数有三种类型,IN,OUT,INOUT,用英文直译就很明白了,一种是输入的参数,一种是输出,一种是就要输入又要输出。
    如果没接触过可以不创建参数,直接点完成,先做个简单的例子,
    点击完成后,Navicat会把存储过程的基本结构创建出来
    CREATE DEFINER=`dev`@`%` PROCEDURE `insert_act`()
    BEGIN
        #Routine body goes here...
      //这里是存储过程的本体
    END
    我们可以先写个简单的例子来了解一下存储过程。下面是我写的一个简单的例子
    
    
    //存储过程里面可以写SQL语句
    CREATE DEFINER=`root`@`localhost` PROCEDURE `test2`()
    BEGIN
        #Routine body goes here...
        DECLARE a INT DEFAULT 1;//定义INT数据类型的a 并初始化值为1
        while a<=10 DO
        
    set a =a+1; end WHILE; SELECT a; END
    如果是在命令行中编写,则需要重新定义结束符、

    DECLARE 变量名 数据类型 DEFAULT 值,定义变量并初始化

    SQL循环有三种

    WHILE……DO……END WHILE
    REPEAT……UNTIL END REPEAT
    LOOP……END LOOP

    /*创建存储过程*/

    CREATE DEFINER=`root`@`localhost` PROCEDURE `insert_act`() // definer:在执行存储过程前验证definer对应的用户如:root@localhost是否存在,以及是否具有执行存储过程的权限
    BEGIN //存储过程开始标志
    DECLARE skuId INT DEFAULT 0;
    DECLARE productId INT DEFAULT 0;
    DECLARE flag INT;
    /*定义游标*/
    DECLARE skuIds CURSOR FOR SELECT a.id,a.product_id from ser_product_sku a inner JOIN ser_product b on b.id = a.product_id where a.status = 1 and b.status = 'ONLINE';
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET flag=1;
    SET flag=0;
    OPEN skuIds;
    REPEAT
    FETCH skuIds INTO skuId,productId;
    INSERT ser_product_act (project_id,product_id,act_id,product_sku_id) VALUES (1,productId,65,skuId);
    UNTIL flag
    END REPEAT;
    CLOSE skuIds;
    END
  • 相关阅读:
    java操作生成jar包 和写入jar包
    jboss配置jndi连接池
    windows 域的LDAP查询相关举例
    LDAP error Code 及解决方法
    HDU 6417
    CF1299D Around the World
    codechef Chef and The Colored Grid
    Educational Codeforces Round 82 (Rated for Div. 2)
    CF1237F Balanced Domino Placements
    CF1254E Send Tree to Charlie
  • 原文地址:https://www.cnblogs.com/LoveHe/p/4992196.html
Copyright © 2011-2022 走看看