• 存储过程


    什么是存储过程:

    简单的说,就是一组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
  • 相关阅读:
    用JS获取地址栏参数的方法(超级简单)
    返回前一页并刷新页面方法
    js 弹出确认 取消对话框
    微信“无法回答问题设置”失效
    百度地图api学习平台
    JQuery 定时器 (Jquery Timer 插件)
    select 框option添加属性 js计算价格 保持两位小数
    修改织梦分页标签样式
    一键导航
    关于memset赋值无穷大无穷小
  • 原文地址:https://www.cnblogs.com/jack1989/p/7989959.html
Copyright © 2020-2023  润新知