楼主: gaolu1234

[原创] 灌个水: oracle 脚本转换 mysql

[复制链接]
论坛徽章:
13
生肖徽章2007版:兔
日期:2009-03-24 09:50:192014年新春福章
日期:2014-02-18 16:43:09大众
日期:2013-09-02 09:13:19蜘蛛蛋
日期:2013-05-20 09:44:372013年新春福章
日期:2013-02-25 14:51:24蛋疼蛋
日期:2012-11-27 15:47:59ITPUB 11周年纪念徽章
日期:2012-10-09 18:09:19奥运会纪念徽章:足球
日期:2012-10-08 08:54:372011新春纪念徽章
日期:2011-03-23 16:25:422011新春纪念徽章
日期:2011-02-18 11:43:34
11#
 楼主| 发表于 2009-2-19 14:07 | 只看该作者
oracle 的exit 对应 mysql 的leave

使用道具 举报

回复
论坛徽章:
4
12#
发表于 2009-2-20 12:24 | 只看该作者
数据库迁移麻烦啊

使用道具 举报

回复
论坛徽章:
13
生肖徽章2007版:兔
日期:2009-03-24 09:50:192014年新春福章
日期:2014-02-18 16:43:09大众
日期:2013-09-02 09:13:19蜘蛛蛋
日期:2013-05-20 09:44:372013年新春福章
日期:2013-02-25 14:51:24蛋疼蛋
日期:2012-11-27 15:47:59ITPUB 11周年纪念徽章
日期:2012-10-09 18:09:19奥运会纪念徽章:足球
日期:2012-10-08 08:54:372011新春纪念徽章
日期:2011-03-23 16:25:422011新春纪念徽章
日期:2011-02-18 11:43:34
13#
 楼主| 发表于 2009-2-23 10:05 | 只看该作者

上周5,搞了一个下午,终于搞定了mysql外连接的写法。

上周5,搞了一个下午,终于搞定了mysql外连接的写法。

oracle:
select a.aid aid , b.bid bid ,c.cid cid , d.did did , e.eid eid
from
tablea a ,
tableb b ,
tablec c ,
tabled d ,
tablee e
where
a.aid = b.aid (+)
and a.aid = c.aid(+)
and b.bid = d.bid (+)
and d.did = e.eid (+)
order by a.aid , b.bid , c.cid , d.did ,e.eid
;



mysql:
select a.aid aid , b.bid bid ,c.cid cid , d.did did , e.eid eid
from
tablea a left join
        (
        tableb b left join
                (
                        tabled d left join tablee e
                        on (d.did = e.eid)
                )
                on (b.bid = d.bid )  
        )
        on ( a.aid = b.aid)
        left join tablec c
        on a.aid = c.aid
order by a.aid , b.bid , c.cid , d.did ,e.eid
;

使用道具 举报

回复
论坛徽章:
13
生肖徽章2007版:兔
日期:2009-03-24 09:50:192014年新春福章
日期:2014-02-18 16:43:09大众
日期:2013-09-02 09:13:19蜘蛛蛋
日期:2013-05-20 09:44:372013年新春福章
日期:2013-02-25 14:51:24蛋疼蛋
日期:2012-11-27 15:47:59ITPUB 11周年纪念徽章
日期:2012-10-09 18:09:19奥运会纪念徽章:足球
日期:2012-10-08 08:54:372011新春纪念徽章
日期:2011-03-23 16:25:422011新春纪念徽章
日期:2011-02-18 11:43:34
14#
 楼主| 发表于 2009-2-25 09:54 | 只看该作者
oracle :
alter table xxxx modify hostid  default 2;
mysql :

alter table xxxxx modify column ISQUERYKEY decimal(1,0)   default 0;



mysql :
####判断 大小写敏感的 等于
if binary v_temp_str = binary substr then



oracle :
select sysdate from dual ;
mysql :
select now() ;

使用道具 举报

回复
论坛徽章:
14
会员2007贡献徽章
日期:2007-09-26 18:42:10生肖徽章2007版:鸡
日期:2009-10-29 16:15:30生肖徽章2007版:兔
日期:2009-04-14 19:32:34生肖徽章2007版:猴
日期:2008-11-28 10:39:32奥运会纪念徽章:摔跤
日期:2008-08-12 10:59:32奥运会纪念徽章:艺术体操
日期:2008-08-07 09:43:42奥运会纪念徽章:举重
日期:2008-05-04 17:12:35生肖徽章2007版:鼠
日期:2008-01-02 17:35:53生肖徽章2007版:牛
日期:2008-01-02 17:35:53生肖徽章2007版:虎
日期:2008-01-02 17:35:53
15#
发表于 2009-2-27 14:53 | 只看该作者
lz总结的不错
1年前俺也干过这个
感慨啊。。。

使用道具 举报

回复
论坛徽章:
1
奥运会纪念徽章:举重
日期:2008-07-06 20:41:58
16#
发表于 2009-3-3 13:44 | 只看该作者
foreign key 怎么转

使用道具 举报

回复
论坛徽章:
13
生肖徽章2007版:兔
日期:2009-03-24 09:50:192014年新春福章
日期:2014-02-18 16:43:09大众
日期:2013-09-02 09:13:19蜘蛛蛋
日期:2013-05-20 09:44:372013年新春福章
日期:2013-02-25 14:51:24蛋疼蛋
日期:2012-11-27 15:47:59ITPUB 11周年纪念徽章
日期:2012-10-09 18:09:19奥运会纪念徽章:足球
日期:2012-10-08 08:54:372011新春纪念徽章
日期:2011-03-23 16:25:422011新春纪念徽章
日期:2011-02-18 11:43:34
17#
 楼主| 发表于 2009-3-5 09:21 | 只看该作者

foreign key

写法是跟oracle 一样的,不过要外键起作用,建立表的时候要加一个innodb 。

drop table abcd ;
create table abcd ( id decimal(18) ,primary key (id) ) ENGINE = INNODB;
drop table bbb ;
create table bbb ( id decimal(18),primary key (id) ) ENGINE = INNODB;
alter table abcd add foreign key (id) references bbb(id) ;

[ 本帖最后由 gaolu1234 于 2009-3-5 10:15 编辑 ]

使用道具 举报

回复
论坛徽章:
13
生肖徽章2007版:兔
日期:2009-03-24 09:50:192014年新春福章
日期:2014-02-18 16:43:09大众
日期:2013-09-02 09:13:19蜘蛛蛋
日期:2013-05-20 09:44:372013年新春福章
日期:2013-02-25 14:51:24蛋疼蛋
日期:2012-11-27 15:47:59ITPUB 11周年纪念徽章
日期:2012-10-09 18:09:19奥运会纪念徽章:足球
日期:2012-10-08 08:54:372011新春纪念徽章
日期:2011-03-23 16:25:422011新春纪念徽章
日期:2011-02-18 11:43:34
18#
 楼主| 发表于 2009-3-5 14:58 | 只看该作者
mysql 外键:
drop table abcd ;
create table abcd ( id decimal(18) ,primary key (id) ) ENGINE = INNODB;
drop table bbb ;
create table bbb ( id decimal(18),primary key (id) ) ENGINE = INNODB;
alter table abcd add foreign key (id) references bbb(id) ;
  


oracle 取当月最后一天 ;
trunc(LAST_DAY(sysdate))+1-1/(24*60*60)
mysql:
SELECT ADDTIME( DATE_FORMAT ( LAST_DAY(CURDATE())  ,'%Y-%m-%d %T') , '23:59:59' ) ;


mysql :
不支持游标嵌套,只能用临时表代替,自己建立循环 。

create temporary table xxxx ;

使用道具 举报

回复
论坛徽章:
13
生肖徽章2007版:兔
日期:2009-03-24 09:50:192014年新春福章
日期:2014-02-18 16:43:09大众
日期:2013-09-02 09:13:19蜘蛛蛋
日期:2013-05-20 09:44:372013年新春福章
日期:2013-02-25 14:51:24蛋疼蛋
日期:2012-11-27 15:47:59ITPUB 11周年纪念徽章
日期:2012-10-09 18:09:19奥运会纪念徽章:足球
日期:2012-10-08 08:54:372011新春纪念徽章
日期:2011-03-23 16:25:422011新春纪念徽章
日期:2011-02-18 11:43:34
19#
 楼主| 发表于 2009-3-6 16:29 | 只看该作者
mysql exceptin 处理 :
create table ab ( id decimal(18) ,lname varchar(255) , ltime datetime , primary key (id) ) ;

delete from ab ;

drop procedure if exists p_testexception ;
delimiter //
create procedure p_testexception()
begin
        begin
        declare v_id decimal(18);
        declare v_count decimal(18);
        declare done int default 0;
        declare continue handler for sqlstate '02000' set done = 1;        
        declare continue handler for sqlexception  insert into ab ( id , lname ,ltime ) values ( 101 + v_id   ,'error2' ,now()) ;         
         
        set v_id = 1 ;
        while v_id <= 3 do
                insert into ab ( id ,lname ) values ( v_id , done   ) ;
                 
        set v_id = v_id +  1 ;
        end while  ;
        select done ;
        end ;
       
        begin
        declare v_id decimal(18);
        declare v_count decimal(18);
        declare done int default 0;
        declare continue handler for sqlstate '02000' set done = 1;        
        declare continue handler for sqlexception  insert into ab ( id , lname ,ltime ) values ( 102 + v_id  ,'error3' ,now()) ;         
         
        set v_id = 10 ;
        while v_id <= 13 do
                insert into ab ( id ,lname ) values ( v_id , done   ) ;
                 
        set v_id = v_id +  1 ;
        end while  ;
        select done ;
        end ;                                   
end ;
delimiter ;

call p_testexception ;

select * from ab ;

使用道具 举报

回复
论坛徽章:
13
生肖徽章2007版:兔
日期:2009-03-24 09:50:192014年新春福章
日期:2014-02-18 16:43:09大众
日期:2013-09-02 09:13:19蜘蛛蛋
日期:2013-05-20 09:44:372013年新春福章
日期:2013-02-25 14:51:24蛋疼蛋
日期:2012-11-27 15:47:59ITPUB 11周年纪念徽章
日期:2012-10-09 18:09:19奥运会纪念徽章:足球
日期:2012-10-08 08:54:372011新春纪念徽章
日期:2011-03-23 16:25:422011新春纪念徽章
日期:2011-02-18 11:43:34
20#
 楼主| 发表于 2009-3-11 15:02 | 只看该作者

又发现mysql一个不足之处。

trigger不能disable ,在导数据的时候很麻烦。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表