您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

MySQL与Oracle 差异比较之二基本语法

2025/12/24 18:35:40发布8次查看
mysql与oracle 差异比较之二基本语法
基本语法
编号                类别                           oracle                                     mysql                                     注释    
1    变量的声明方式不同    li_index number := 0    declare li_index integer default 0    1. mysql 使用declare定义局部变量.
定义变量语法为: declare var_name[,...] type [default value] 要给变量提供一个默认值,需要包含一个default子句。值可以被指定为一个表达式,不需要为一个常数。如果没有default子句,初始值为null。    
2    变量的赋值方式不同    lv_inputstr := iv_inputstr    set lv_inputstr = iv_inputstr    1. oracle变量赋值使用:=
mysql 使用赋值使用set关键字. 将一个值赋给一个变量时使用=.    
3    跳出(退出)语句不同    exit;    leave procedure name;    1. oracle: 如果exit语句在循环中就退出当前循环.如果exit语句不再循环中,就退出当前过程或方法.
mysql: 如果leave语句后面跟的是存储过程名,则退出当前存储过程. 如果leave语句后面跟的是lable名. 则退出当前lable.
while 条件 loop
exit;
end loop;    label_name:while 条件 do
leave label_name;
end while label_name;    
4    定义游标    type g_grp_cur is ref cursor;
declare cursor_name cursor for select_statement;    oracle可以先定义游标,然后给游标赋值.
mysql定义游标时就需要给游标赋值. mysql定义游标出自 mysql 5.1 参考手册20.2.11.1.声明光标.    
5    定义数组    type unpacklist_type is table of varchar2(2000) index by binary_integer;    可以使用临时表代替oracle数组,
也可以循环拆分字符来替代oracle数组.    目前可以使用临时表来代替oracle数组.
详见<<2009002-otmpps-difficult questions-0001.doc>>中2.4 mysql数组处理部分    
6    注释方式不同    -- message 或 /** …. */
或 /* …. */    -- message 或 /* …. */
或 #    mysql注释来自 mysql 5.1参考手册 9.5. 注释语法, 建议同oracle一样, 单行用--, 多行/* */    
7    自带日期时间函数格式不同    oracle时间格式:yyyy-mm-dd hh:mi:ss    mysql时间格式:%y-%m-%d %h:%i:%s    1. mysql日期字段分date和time两种.
oracle日期字段只有date,包含年月日时分秒信息.
2. mysql中取当前系统时间为now()函数,精确到秒.
oracle中取当前数据库的系统时间为sysdate, 精确到秒.    
8    日期加减    当前时间加n天: sysdate+n
当前时间减n天: sysdate-n    日期相加: date_add(now(), interval 180 day)
日期相减: date_sub('1998-01-01 00:00:00', interval '1 1:1:1' day_second)    
9    字符串连接符不同    result := v_int1||v_int2;    set result = concat(v_int1,v_int2);    1. oracle使用||连接字符串,也可以使用concat函数. 但oracle的concat函数只能连接两个字符串.
mysql使用concat方法连接字符串. mysql的concat函数可以连接一个或者多个字符串,如
mysql> select concat('10'); 结果为: 10.
mysql> select concat('11','22','33','aa'); 结果为: 112233aa
2. ||在mysql是与运算    
10    定义游标不同    cursor l_bk_cur is
select b.bk_hdr_int_key, b.bk_num
from es_sr_dtl_vrb a, es_bk_hdr b
where a.bk_hdr_int_key = b.bk_hdr_int_key
and b.bk_status != es_bk_pkg.g_status_can
and a.sr_hdr_int_key = ii_sr_hdr_int_key;    declare l_bk_cur cursor
for select b.bk_hdr_int_key, b.bk_num
from es_sr_dtl_vrb a, es_bk_hdr b
where a.bk_hdr_int_key = b.bk_hdr_int_key
and b.bk_status != es_bk_pkg.g_status_can
and a.sr_hdr_int_key = ii_sr_hdr_int_key;
详见<<2009002-otmpps-difficult questions-0001.doc>>中2.2 mysql游标处理部分    
11    事务回滚    rollback;    rollback;    oracle和mysql中使用方法相同    
12    goto语句    goto check_date;    goto check_date;    oracle和mysql中使用方法相同    
以上就是mysql与oracle 差异比较之二基本语法的内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product