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
  • 相关阅读:
    .NET Framework Execution Was Aborted By Escalation Policy
    语句获取作业属性、历史记录
    Login failed知多少
    数据库代理错误日志
    微信小程序资料
    时间进度条,根据时间,显示任务进度条
    两个select 左右添加,上下移动
    图片轮播无缝接
    CSS3简单的栅格系统
    JavaScript DOM节点和文档类型
  • 原文地址:https://www.cnblogs.com/jack1989/p/7989959.html
Copyright © 2011-2022 走看看