美文网首页
关于mysql存储过程创建动态表名及参数处理

关于mysql存储过程创建动态表名及参数处理

作者: 心淡然如水 | 来源:发表于2020-02-21 09:15 被阅读0次

        网上找了好多动态创建表名以及参数处理的博客,但是写的都差强人意!自己也是一个刚入门没几个月的小白,一直自己百度以后能有一个规范完整能执行下来学习的代码!今天我在这里按照一些自己的学习以及对别人的博客理解在这里写几个测试例子,仅供参考......

prepare

        前几天写项目的时候,有用到存储过程,需要在存储过程中创建一张临时表,然和在动态增减临时表的字段,所以就用到了mysql的prepare预编译语句。

基本语法:

PREPARE stmt from '你的sql语句';

EXECUTE stmt (如果sql有参数的话, USING xxx,xxx); // 这里USING的只能是会话变量

DEALLOCATE PREPARE stmt;

这三句话分别就是预定义好sql.

执行预定义的sql

释放掉数据库连接

Truncate

        删除表中的数据的方法有delete,truncate, 其中TRUNCATE TABLE用于删除表中的所有行,而不记录单个行删除操作。TRUNCATE TABLE 与没有 WHERE 子句的 DELETE 语句类似;但是,TRUNCATE TABLE 速度更快,使用的系统资源和事务日志资源更少

具体使用

CREATE DEFINER=`root`@`%` PROCEDURE `create_date_table`()

BEGIN

set @sql_create_table = concat(

'CREATE TABLE IF NOT EXISTS operrecord_', date_format(curdate(),'%y%m%d'),

"(

`oper_id` int(10) NOT NULL AUTO_INCREMENT,

`oper_role` int(11) NOT NULL,

`oper_type` varchar(30) NOT NULL DEFAULT '',

`oper_content` varchar(1000) NOT NULL DEFAULT '',

`oper_cls` int(10) NOT NULL DEFAULT '0',

`oper_date` datetime NOT NULL,

`oper_serverid` int(11) NOT NULL DEFAULT '1',

PRIMARY KEY (`oper_id`)

) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8");

PREPARE sql_create_table FROM @sql_create_table; 

EXECUTE sql_create_table;

set @sql_table = concat(

'SELECT * FROM operrecord_', date_format(curdate(),'%y%m%d'));

PREPARE sql_table FROM @sql_table; 

EXECUTE sql_table;

END

动态创建日历表用法

首先在数据库创建一个create_calendar日历表

CREATE DEFINER=`root`@`%` PROCEDURE `create_calendar`(s_date DATE, e_date DATE)

BEGIN

  -- 生成一个日历表

    SET @createSql = 'truncate  TABLE calendar_custom';

    prepare stmt from @createSql;

    execute stmt;

    WHILE s_date <= e_date DO

        INSERT IGNORE INTO calendar_custom VALUES (DATE(s_date)) ;

        SET s_date = s_date + INTERVAL 1 DAY ;

    END WHILE ;

END

相关文章

  • 关于mysql存储过程创建动态表名及参数处理

    网上找了好多动态创建表名以及参数处理的博客,但是写的都差强人意!自己也是一个刚入门没几个月的小白,一直自己百度以后...

  • 存储过程

    创建存储过程 mysql: 执行存储过程 mysql: 使用OUT参数和INOUT参数: PREPARE和EXEC...

  • Mysql存储过程

    阅读目录:MySQL存储过程_创建-调用-参数 存储过程:SQL中的“脚本” 创建存储过程 调用存储过程 存储过程...

  • MySQL存储过程创建及调用方法

    MySQL存储过程是一个sql语句,那么我们如何创建呢,MySQL存储过程创建及修改,删除操作。 1,存储过程创建...

  • MySQL之:存储过程

    存储过程 存储过程保存在mysql.proc表中 创建存储过程 CREATE PROCEDURE sp_name ...

  • Oracle存储过程-1

    Oracle存储过程 1, 存储过程的创建 CREATE OR REPLACE PROCEDURE 过程名(参数列...

  • MySQL介绍

    mysql介绍 其他数据库介绍 mysql特点 mysql存储引擎类型及特点 关于mysql单表存储 mysql介...

  • jmeter

    jmeter关于cookie传递的处理及动态参数传递 项目线程的许多信息需要存储到cookie或是session中...

  • MySQL快速创建千万测试数据

    mysql版本 8.0.21 创建基础表 使用存储过程造数据(不推荐) 采用临时表 4.1 创建临时表 4.2 生...

  • MySQL存储过程和存储函数

    一:创建存储过程: demo1:判断输入参数;创建表。 delimiter // create procedure...

网友评论

      本文标题:关于mysql存储过程创建动态表名及参数处理

      本文链接:https://www.haomeiwen.com/subject/baexfhtx.html