• mysql 存储过程


    按照百度百科的介绍:存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。


    mysql 中的存储过程的实现是在mysql 5.0 版本中引进的,下面简单介绍mysql中的存储过程基本语法和使用场合。

    DELIMITER // 
    CREATE PROCEDURE GetAllProducts() 
    BEGIN 
    SELECT * FROM products; 
    END // 
    DELIMITER ; 

    这里创建了一个非常简单的存储过程,名称是GetAllProducts ,见名思意,就是得到所有产品。

    执行存储过程也很简单,就是CALL GetAllProducts()即可。begin 和 end 之间就是存储过程的具体操作。下面介绍存储过程的参数形式使用:

    DELIMITER // 
    CREATE PROCEDURE GetOfficeByCountry(IN countryName VARCHAR(255)) 
    BEGIN 
    SELECT city, phone 
    FROM offices 
    WHERE country = countryName; 
    END // 
    DELIMITER ;

    通过输入参数的传入countryName我们可以通过country来得到这个国家城市对应的电话。


    DELIMITER $$ 
    CREATE PROCEDURE CountOrderByStatus( 
    IN orderStatus VARCHAR(25), 
    OUT total INT) 
    BEGIN 
    SELECT count(orderNumber) 
    INTO total 
    FROM orders 
    WHERE status = orderStatus; 
    END$$ 
    DELIMITER ; 

    这个存储过程不但有输入参数,还有输出参数,通过执行这个存储过程,我们就可以得到不同订单状态下的订单数目,并且把这个值赋给索要传递的变量,这些只是简单的存储过程。实际应用中,我们的存储过程可能一个就有几百行,甚至上千行,它里面完成了一系列操作。月底的时候,可能我们仅仅通过执行一个call BaoBiao();的存储过程,就把报表所需要的数据都传递赋值完成了。

    DELIMITER $$

    CREATE PROCEDURE `Capitalize`(INOUT str VARCHAR(1024)) 
    BEGIN 
    DECLARE i INT DEFAULT 1; 
    DECLARE myc, pc CHAR(1); 
    DECLARE outstr VARCHAR(1000) DEFAULT str; 
    WHILE i <= CHAR_LENGTH(str) DO 
    SET myc = SUBSTRING(str, i, 1); 
    SET pc = CASE WHEN i = 1 THEN ' ' 
    ELSE SUBSTRING(str, i - 1, 1) 
    END; 
    IF pc IN (' ', '&', '''', '_', '?', ';', ':', '!', ',', '-', '/', '(', '.') THEN 
    SET outstr = INSERT(outstr, i, 1, UPPER(myc)); 
    END IF; 
    SET i = i + 1; 
    END WHILE; 
    SET str = outstr; 
    END$$ 

    DELIMITER ; 


    这个存储过程是把标准的语句中的首字母变成大写:

    比如:set @str = 'this is a store';

    CALL Capitalize($str);

    select $str;

    得到的语句是:This Is A Store


    如果:set @str= 'this is a store procedure& test!&abc';

    CALL Capitalize($str);

    select $str;

    得到的语句是:  This Is A Store Procedure&tTst!&&Ac 会出现一些问题

    需要读者们自己去修改这个存储过程了。



     


  • 相关阅读:
    7-25 念数字
    7-24 约分最简分式
    7-23 币值转换
    HDU-1102-Constructing Roads
    HDU-1301-Jungle Roads
    链式向前星
    HDU-1217-Arbitrage(SPFA)
    POJ-1258-Agri-Net
    HDU-1863-畅通工程
    POJ-3050-Hoscotch
  • 原文地址:https://www.cnblogs.com/itdreamfly/p/12871645.html
Copyright © 2020-2023  润新知