• Mysql-学习笔记(==》存储过程 九)


    1、存储过程概念
    在大型数据库系统中,一组为了完成特定功能的sql语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。


    2、建立存储过程
    delimiter//
    create procedure 过程名(参数名 参数类型)
    begin
    存储过程要执行的语句;

    end//
    delimiter;

    建立添加数据的存储过程
    修改数据的存储过程
    删除...
    查询...
    某些项目众的业务处理的存储过程


    3、存储过程使用的语句
    if then
    end if;

    while do
    end while;

    repeat 循环语句 1+2+3+4+...+100=5050;

    case switch


    调用存储过程
    call 过程名(实参表)

    删除存储过程

    drop procedure 过程名;


    ------------------------------------

    USE db;

    CREATE TABLE sss(
    sid INT UNSIGNED NOT NULL AUTO_INCREMENT,
    sname VARCHAR(10) NOT NULL,
    sscore TINYINT UNSIGNED,
    saddress VARCHAR(30),
    stel BIGINT UNSIGNED,
    PRIMARY KEY(sid)
    )ENGINE=MYISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
    INSERT INTO sss VALUES(NULL,'甄子丹',90,'北京',18298375932);
    INSERT INTO sss VALUES(NULL,'李连杰',50,'湖北省武汉市',18298375932);
    INSERT INTO sss VALUES(NULL,'杨幂',20,'上海',18298375932);
    INSERT INTO sss VALUES(NULL,'李晨',30,'济南',18298375932);


    SELECT * FROM sss;

    成绩在20-59之间的加分
    地址包含哪个地区的字符的 加多少分

    -- 查看db数据库中所有的存储过程信息
    SHOW PROCEDURE STATUS WHERE Db='db';

    CALL sssadd(6);-- 传参数(相当于调用方法)
    -- 建立存储过程(相当于java的类)
    DELIMITER//
    CREATE PROCEDURE sssadd(i INT)
    BEGIN
    DECLARE sc TINYINT;
    DECLARE sd VARCHAR(30);
    SELECT sscore, saddress INTO sc,sd FROM sss WHERE sid=i;
    IF sc>=20 AND sc<60 THEN
    IF sd LIKE '%上海%' THEN
    UPDATE sss SET sscore=sscore+1 WHERE sid=i;
    END IF;

    IF sd LIKE '%济南%' THEN
    UPDATE sss SET sscore=sscore+5 WHERE sid=i;
    END IF;
    END IF;
    END//
    DELIMITER;

    DROP PROCEDURE sssadd;

    -- 另外一种if then.. elseif... then else... end if
    DELIMITER//
    CREATE PROCEDURE sssadd(i INT)
    BEGIN
    DECLARE sc TINYINT;
    DECLARE sd VARCHAR(30);
    SELECT sscore, saddress INTO sc,sd FROM sss WHERE sid=i;
    IF sc>=20 AND sc<60 THEN
    IF sd LIKE '%上海%' THEN
    UPDATE sss SET sscore=sscore+1 WHERE sid=i;
    ELSEIF sd LIKE '%济南%' THEN
    UPDATE sss SET sscore=sscore+5 WHERE sid=i;
    ELSE
    UPDATE sss SET sscore=sscore+3 WHERE sid=i;
    END IF;
    END IF;
    END//
    DELIMITER;


    -- 条件循环 declare 声明变量 set 设置变量
    DELIMITER//
    CREATE PROCEDURE ddd()
    BEGIN
    DECLARE n INT;
    SET n=0;
    SET @x=0;
    REPEAT
    SET @x=@x+1;
    SET n=n+1;
    UNTIL n>100 END REPEAT;
    END//
    DELIMITER;
    DROP PROCEDURE ddd;
    CALL ddd();

    SELECT @x;

  • 相关阅读:
    天才AI少年范浩强坚信“弄斧要到班门”
    向Excel说再见,神级编辑器统一表格与Python
    疯狂脑机接口计划:马斯克的 “读心术”
    Jenkins 学习资料
    VMware: windows8 与 虚拟机ubuntu 14.04 共享文件夹
    [转载]一个老软件测试工程师的日志
    python 解析 配置文件
    借助github搭建自己的博客
    [转载]你需要知道的 16 个 Linux 服务器监控命令
    [转载]Linux服务器性能评估与优化
  • 原文地址:https://www.cnblogs.com/huangf714/p/6148318.html
Copyright © 2020-2023  润新知