MySQL与Oracle 差异比较之四条件循环语句
循环语句
编号
类别
ORACLE
MYSQL
注释
1
IF语句使用不同
IF iv_weekly_day='MON'THEN
ii_weekly_day:='MON';
ELSIF iv_weekly_day='TUE' THEN
ii_weekly_day:='TUE';
ENDIF;IF iv_weekly_day='MON'THEN
setii_weekly_day='MON';
ELSEIF iv_weekly_day='TUE' THEN
setii_weekly_day='TUE';
ENDIF; 1.mysql和oracle除了关键字有一个字差别外(ELSEIF/ELSIF),if语句使用起来完全相同.
2.mysqlif语句语法:摘自MySQL5.1参考手册20.2.12.1.IF语句
IFsearch_conditionTHENstatement_list
[ELSEIFsearch_conditionTHENstatement_list]...
[ELSEstatement_list]
ENDIF
IF实现了一个基本的条件构造。如果search_condition求值为真,相应的SQL语句列表被执行。如果没有search_condition匹配,在ELSE子句里的语句列表被执行。statement_list可以包括一个或多个语句。
2
FOR语句不同
FOR li_cntIN0..(ii_role_cnt-1) LOOP
SELECTCOUNT(*)INTOli_role_ik_cntFROMSD_ROLE
WHEREROLE_CD=lo_aas_role_upl(li_cnt);
IFli_role_ik_cnt=0 THEN
RETURN'N';
ENDIF;
li_role_ik_cnt:=-3;
ENDLOOP; loopLable:LOOP
IFi>(ii_role_cnt-1)THEN
LEAVElooplable;
ELSE
SELECTCOUNT(*)INTOli_role_ik_cntFROMSD_ROLE
WHEREROLE_CD='ADMIN_SUPER';/*lo_aas_role_upl(li_cnt);*/
IFli_role_ik_cnt=0 THEN
RETURN'N';
ENDIF;
SETli_role_ik_cnt=-3;
SETi=i+1;
ENDIF;
ENDLOOPloopLable;
1.oracle使用For语句实现循环.
Mysql使用Loop语句实现循环.
2.oracle使用For…loop关键字.
Mysql使用loopLable:LOOP实现循环.
3
while语句不同
WHILE lv_inputstrISNOTNULL LOOP
...
ENDLOOP;WHILE lv_inputstrISNOTNULL DO
...
ENDWHILE;1.oracle中使用while语句关键字为:while表达式loop…endloop;
mysql中使用while语句关键字为:while表达式do…endwhile;