zoukankan      html  css  js  c++  java
  • 《学习》9存储过程

    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;

  • 相关阅读:
    PyQt作品 – PingTester – 多点Ping测试工具
    关于和技术人员交流的一二三
    Pyjamas Python Javascript Compiler, Desktop Widget Set and RIA Web Framework
    Hybrid Qt applications with PySide and Django
    pyjamas build AJAX apps in Python (like Google did for Java)
    PyQt 维基百科,自由的百科全书
    InfoQ:请问为什么仍要选择Java来处理后端的工作?
    Eric+PyQt打造完美的Python集成开发环境
    python select module select method introduce
    GUI Programming with Python: QT Edition
  • 原文地址:https://www.cnblogs.com/huangf714/p/8630531.html
Copyright © 2011-2022 走看看