Oracle MySQL动态表的实际解决方案

数据库 Oracle
我们今天主要和大家一起讨论的是Oracle MySQL动态表的实际解决办法,本文主要是从MySQL存储过程的实例来进行讲述的。

下面的文章主要讲述的是Oracle MySQL动态表的实际解决办法,我们大家都知道,CRM需要定期将相关的数据导回到其CRM数据库(目的DB:Oracle;源DB:MySQL);但是因为目前增长量不太大,,,而今后会比较大.由于Oracle MySQL数据库不是我建的。

还是决定登上去看一下,主表没有一个字段可以***标识一比记录的,也就是说我目前只会面临.我导数据的同时有新的数据录入,明显会出问题.程序员又不在,,,之前一直都只管Oracle,马上要让玩MySQL,看来只得现学现用了,现写一个Oracle MySQL的存储过程来实现.让系统每天产生后一天的表放在那里,系统根据时间的不同,将数据插入不同的表中,以下为实施脚本:

 

MySQL存储过程事例:

 

 

declare @t_date varchar(20);  
set @t_date = '(select concat('readinfo',curdate()+0))';  
mysql>delimiter && 
  • 1.
  • 2.
  • 3.

临时结束符

mysql>create procedure p()   
->begin   
->select * from pet;   
->end;&&   
mysql>delimiter ;   
mysql> call p();  
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

自写Oracle MySQL存储过程:

CREATE TABLE readinfo20070726 (  
eid int(11) ,  
guid varchar(36) ,  
ip varchar(20) ,  
date varchar(20),  
bookname varchar(60) ,  
version int(11) ,  
isvip int(11) ,  
vipname varchar(80)  
ENGINE=MyISAM DEFAULT CHARSET=utf8   
CREATE TABLE readinfo20070727 (  
eid int(11) ,  
guid varchar(36) ,  
ip varchar(20) ,  
date varchar(20),  
bookname varchar(60) ,  
version int(11) ,  
isvip int(11) ,  
vipname varchar(80)  
ENGINE=MyISAM DEFAULT CHARSET=utf8   
CREATE TABLE readinfo20070728 (  
eid int(11) ,  
guid varchar(36) ,  
ip varchar(20) ,  
date varchar(20),  
bookname varchar(60) ,  
version int(11) ,  
isvip int(11) ,  
vipname varchar(80)  
ENGINE=MyISAM DEFAULT CHARSET=utf8  
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.

存储过程:

 

CREATE PROCEDURE sp_readinfo(in eid int,in guid varchar(36),in ip varchar(50))  
NOT DETERMINISTIC  
SQL SECURITY DEFINER  
COMMENT ''  
BEGIN  
set @table = concat('readinfo',curdate()+0);  
set @temp1 = 'insert into ';  
set @temp2 = '(eid,guid,ip,date) values(';  
set @value1 = eid;  
set @value2 = guid;  
set @value3 = ip;  
set @value4 = 'now())';  
set @sql_text:=concat(@temp1,@table,@temp2,@value1,',',@value2,',',@value3,',',@value4);   
prepare stmt from @sql_text;  
execute stmt;  
end; 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.

这么做,,,对性能肯定会有影响,也只是暂时的,,,

附:

 

MYSQL存储过程使用动态SQL 建多表

 

例一:循环建立字段相同滴多表 表名如: k1k k2k k3k ........

 

mysql> delimiter //  
mysql> create procedure ppp (in i int)  
-> begin  
-> declare k int;  
-> set k=1;  
-> while k<i do  
-> set @t=k;  
-> set @tname=concat('k',@t,'k');  
-> set @dwhe='(id int,name varchar(255))';  
-> set @sql_text:=concat('create table ',@tname,@dwhe);  
-> prepare stmt from @sql_text;  
-> execute stmt;  
-> set kk=k+1;  
-> end while;  
-> end;  
-> //  
Query OK, 0 rows affected (0.00 sec)  
mysql> call ppp(6)//  
Query OK, 0 rows affected (0.86 sec) 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.

例二:参数做为表名 查询

mysql> create procedure pp (tname varchar(255))  
-> begin  
-> set @na=tname;  
-> set @sql_text:='select count(*) from ';  
-> set @sql_text:=concat(@sql_text,@na);  
-> prepare stmt from @sql_text;  
-> execute stmt;  
-> end; 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.

上述的相关内容就是对Oracle MySQL动态表解决办法的描述,希望会给你带来一些帮助在此方面。

【编辑推荐】

  1. 配置Oracle RAC中应注意的问题
  2. 想提高Oracle性能,如何优化数据库?
  3. Oracle数据库设计规范化的前两个要求
  4. Oracle to_char的用法的描述
  5. Oracle to_char的用法的描述
责任编辑:佚名 来源: 互联网
相关推荐

2010-04-30 17:33:27

Oracle数据集成

2010-04-20 11:56:30

Oracle物理结构故

2010-05-04 09:34:18

Oracle em

2010-05-25 18:12:19

MySQL 安装

2010-10-28 13:53:13

ORACLE存储过程

2010-05-31 18:33:00

MySQL中文乱码

2010-06-12 13:33:12

MySQL连接池

2010-06-07 09:22:21

MySQL+PHP乱码

2010-05-18 14:00:46

MySQL5.0中文问

2010-07-13 16:36:07

SQLServer占内

2018-12-03 12:07:54

南京新动态解决方案

2010-05-18 18:45:31

MySQL5.0中文问

2010-02-24 14:05:08

WCF openati

2010-06-01 14:51:45

MySQL驱动

2010-05-07 16:30:01

Oracle数据集成

2009-05-22 09:24:00

Blue Coat网络优化安全

2011-05-05 13:13:04

深信服Oracle广域网加速

2018-03-14 19:39:31

数据库Oracle临时表

2010-05-17 09:49:46

MySQL中文问题

2011-07-18 09:36:42

Mysql数据库root@localh
点赞
收藏

51CTO技术栈公众号