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

    什么是存储过程:

    简单的说,就是一组SQL语句集,功能强大,可以实现一些比较复杂的逻辑功能,类似于JAVA语言中的方法;

    ps:存储过程跟触发器有点类似,都是一组SQL集,但是存储过程是主动调用的,且功能比触发器更加强大,触发器是某件事触发后自动调用;

    有输入输出参数,可以声明变量,有if/else, case,while等控制语句,通过编写存储过程,可以实现复杂的逻辑功能;

    函数的普遍特性:模块化,封装,代码复用;

    速度快,只有首次执行需经过编译和优化步骤,后续被调用可以直接执行,省去以上步骤;

    创建一个简单的存储过程:

    BEGIN
    #Routine body goes here...
    DECLARE record_id bigint DEFAULT 100000;#订单id
    DECLARE open_house_id bigint default 1000000;#房源id
    DECLARE order_no bigint DEFAULT 2016010200001; # 订单号
    DECLARE cus_id int DEFAULT 10000; #客户id

    DECLARE i int DEFAULT 0;
    while i < 800000 DO
    insert into t__record values(record_id,order_no,6900,100000,open_house_id,cus_id,1,1,700,null,'2017-12-01

    10:40:20',5100,null,'2017-12-01 10:40:20',1);

    set record_id = record_id+1;
    set i = i+1;
    set order_no = order_no+1;
    set cus_id = cus_id+1;

    end WHILE;

    END

    存储过程中控制语句:

    IF语句:

    CREATE PROCEDURE `proc_if`(IN type int)
    BEGIN
        #Routine body goes here...
        DECLARE c varchar(500);
        IF type = 0 THEN
            set c = 'param is 0';
        ELSEIF type = 1 THEN
            set c = 'param is 1';
        ELSE
            set c = 'param is others, not 0 or 1';
        END IF;
        select c;
    END

    CASE语句:
    CREATE  PROCEDURE `proc_case`(IN type int)
    BEGIN
        #Routine body goes here...
        DECLARE c varchar(500);
        CASE type
        WHEN 0 THEN
            set c = 'param is 0';
        WHEN 1 THEN
            set c = 'param is 1';
        ELSE
            set c = 'param is others, not 0 or 1';
        END CASE;
        select c;
    END

    循环while语句:
    CREATE  PROCEDURE `proc_while`(IN n int)
    BEGIN
        #Routine body goes here...
        DECLARE i int;
        DECLARE s int;
        SET i = 0;
        SET s = 0;
        WHILE i <= n DO
            set s = s + i;
            set i = i + 1;
        END WHILE;
        SELECT s;
    END
  • 相关阅读:
    jQuery中使用了document和window哪些属性和方法
    jQuery.extend函数解析
    我的音乐播放器样式初稿
    jQuery插件xmlDOM源码学习
    从jQuery.camelCase()学习string.replace()
    document.getElementById到底是什么东西?
    LESS和Sass异同
    【转】查找应用中的Private API
    (转)SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问 shiney
    SQL的跨服务器查询(表,视图一样) shiney
  • 原文地址:https://www.cnblogs.com/jack1989/p/7989959.html
Copyright © 2011-2022 走看看