zoukankan      html  css  js  c++  java
  • 数据库MySQL之存储过程

    存储过程的定义

      存储过程是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象。其在思想上与面向对象编程中函数的定义与调用一致,存储过程只是SQL语言维度上的封装与运用。

    存储过程的优缺点

      优点:

      1) 简化了存储调用者的步骤,降低了存储调用者的学习成本

      2) 隐藏了存储过程的实际逻辑,易于商业内容的保密

      3) 降低了sql调用方的程序复杂度

      缺点:存储过程受限于数据库语言,移植性较差

    存储过程的语法

      1) 声明语句结束符:DELIMITER $$

      注:语句结束符默认是 ; 声明语句结束符将其变成 $$,这样在过程体中的分号传递到服务器时,不会被客户端解释。

      2) 声明存储过程:CREATE PROCEDURE demo_demrystv (IN param_in int) 

      3) 创建存储过程 create procedure 存储过程名( 参数 ) 

      4) 声明存储过程的开始和结束:BEGIN...END

      5) 变量赋值 SET @param_in = 33

    存储过程的示例

           在开发中,比如想要向数据库中循环插入日期,可以通过MySQL中的存储过程来实现。

    DELIMITER $$
    DROP PROCEDURE IF EXISTS create_date $$
    CREATE PROCEDURE create_date (s_date DATE, e_date DATE)
    BEGIN
     
        SET @dateSql = 'CREATE TABLE IF NOT EXISTS date_table (
                          `date` date NOT NULL,
                   UNIQUE KEY `unique_date` (`date`) USING BTREE
                       )ENGINE=InnoDB DEFAULT CHARSET=utf8'; 
        prepare stmt from @dateSql; 
        execute stmt; 
     
        WHILE s_date <= e_date DO
            INSERT IGNORE INTO date_table VALUES (DATE(s_date)) ;
            SET s_date = s_date + INTERVAL 1 DAY ;
        END WHILE ; 
     
    END$$
    DELIMITER ;
  • 相关阅读:
    HDU 1286(欧拉函数||筛选法)
    因数打表(HDU1215)
    HDU 1003
    T行数据跟着N个数据
    15校赛
    HDU 1002
    简单大数相加
    (质因子打表记录素数的位置)HDU Largest prime factor
    HDU cake
    【转】 cin、cin.get()、cin.getline()、getline()、gets()等函数的用法
  • 原文地址:https://www.cnblogs.com/Demrystv/p/11913806.html
Copyright © 2011-2022 走看看