这几天在做的synch4j,以前没怎么用过mysql,没想到这么多坑,请允许我吐槽一句mysql真难用。。
以下为我最近几天遇到的问题,发现的一些区别:
1)mysql不支持匿名块,没法像oracle一样使用匿名块方便地执行脚本,只能先创建出一个存储过程,然后执行,删除;
2)mysql的declare在begin内部声明,不像oracle在begin外部声明;
声明变量方式:
DECLARE TABLE_BLOBCLOB VARCHAR(100);
SET TABLE_BLOBCLOB = 'P#SYNCH_T_BLOBCLOB';
3)mysql在存储过程中执行动态sql语句,不像oracle只需要execute immediate就可以了,而是。。
SET v_sql='xxx';
set @v_sql=v_sql;
PREPARE stmt from @v_sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
4)mysql的视图不支持子查询。。蛋碎了。。。我想骂人,用视图就是为了查询时方便,简化sql,怎么可能没有子查询。。
5)mysql不支持oracle那种主键sys_guid()这种设置,程序兼容性需要考虑。。使用auto_increment必须是primarykey并且是int类型
6)其他类型上的,MYSQL不支持CLOB,只有TEXT等类型;ORACLE中是NUMBER,MYSQL是numberic,还有一些查询语句分页LIMIT不细说了;唯一觉得比ORACLE方便的地方
7)还有比较蛋疼的地方是MYSQL的存储过程不支持单点调试功能,只能通过SELECT 变量名输出。。
目前遇到的就是这些坑,后续再更新;