• SQl编程存储过程


    过程化存储

    • 存储过程,一组为完成特定功能、经过编译后存储在数据库中的SQL语序集

      • 灵活性:存储过程中可以进行流程控制和循环操作来完成复杂的判断和运算

      • 一致性:通过存储过程可以使一些关联的操作一起发生,从而维护了数据库的完整性

      • 高效性:存储过程有效减少了数据库开发人员和程序员的工作量
    • 语法

    CREATE PROCEDURE SP_NAME(IN PRAM TYPE, OUT PRAM TYPE);
    IN 表示传入参数 默认不写时表示传入 TYPE 表示类型 
    OUT 表示传出参数 TYPE表示类型
    INOUT 可以使一个传入参数在存储过程中被修改 并传出
    存储过程内部语句以”;”结尾,因此在定义存储过程中需要切换控制台的命令结束符号 以避免歧义,可以使用DELIMITER //
    
    • 调用
    调用存储过程使用 CALL SP_NAME()
    删除存储过程 DROP PROCEDURE SP_NAME
    查看已定义存储过程     SHOW PROCEDURE STATUS/SHOW CREATE PROCEDURE SP_NAME(详细信息)
    
    • 创建数据库
    `create database if not exists demo1 default  character set 'utf8';`
    
    • 创建数据表
    CREATE TABLE `user` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `name` varchar(32) DEFAULT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8
    
    • 定义结束符号
    -- 定义 结束符
    DELIMETER $$
    
    • 函数无参数
    `CREATE PROCEDURE loop_insert_post()
    BEGIN
    DECLARE i INT;
    SET i = 1;
    WHILE i<1000 DO
    INSERT INTO user(`name`,`addtime`)values(concat('JM',i),now());
    SET i = i+1;
    END WHILE;
    END $$`
    
    • 调用函数
    -- 调用函数
    CALL loop_insert_post //
    
    • 恢复mysql 默认结束符
    DELIMETER ;
  • 相关阅读:
    【Redis】简介与安装
    【JAVA】 Java 连接池的工作原理
    【异常】ORA-01536: space quota exceeded for tablespace
    【Oracle】Oracle 序列步长问题
    【ORACLE】常用脚本
    【ORACLE】特殊的NULL
    【JAVA】Runtime
    【JAVA】Calendar
    出现脚本错误或者未正确调用 Page()
    小程序出现 “2 not found” 解决方案
  • 原文地址:https://www.cnblogs.com/xinjie123/p/10963046.html
Copyright © 2020-2023  润新知