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;

  • 相关阅读:
    TP5 自带封装分页查询
    TP5 接口 前面拼接 当前域名
    button按钮点击后过段时间不能点击-验证码(刷新后失效)
    关于PHP -session 的 A session had already been started – ignoring session_start() 错误
    301 Moved Permanently
    PHP实现远程下载图片与 图片接口定义
    在TP框架的前端中 想引用 PHP的函数
    流程控制语句2
    流程控制语句
    数据库查询数据2
  • 原文地址:https://www.cnblogs.com/huangf714/p/8630531.html
Copyright © 2011-2022 走看看