分享

mysql、oracle存储过程语法区别

 沙门空海 2018-01-31

mysql 、oracle存储过程语法区别

1、 条件语句:mysql使用elseif关键字,oracle是elsif关键字;

oracle:

if表达式 then

表达式;

elsif

表达式;

endif;

mysql:

if表达式then

表达式;

elseif

表达式;

endif;

2、 字符串连接

oracle使用 || ;

mysql 使用concat函数;

3、 日期计算(年月日数)

mysql:

函数TimeStampDiff()是MySQL本身提供的可以计算两个时间间隔的函数,语法为:TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2),其中unit单位有如下几种,分别是:SECOND, MINUTE, HOUR, DAY,WEEK, MONTH, QUARTER, or YEAR。

1
当前时间:sysdate()
1
字符转日期:str_to_date() 分隔符一致,年月日要一致;示例:

select str_to_date('2008-4-2 15:3:28','%Y-%m-%d%H:%i:%s');

1
日期转字符:DATE_FORMAT(date,format)
1
SELECT DATE_FORMAT(sysdate(), '%Y-%m-%d %H:%i:%s');
1
数字转字符:concat(num,’’)

oracle:

months_between 求日期间隔月份,除以12即为间隔年份;

天数,只需要日期直接相减;

当前时间:sysdate

字符转日期:to_date()

1
日期转字符:to_char(date,format) to_char(sysdate,'yyyy-mm-dd hh24:mi:ss')
1
数字转字符:to_char(num)

4、 定义游标

oracel:

CURSOR curPlanIndex is

SELECT a.INDEX_SCORE

,c.enum_value,c.dn_value,c.up_value,c.score,c.score_desc

FROM eval_plan_index a

JOIN eval_index_score c onc.index_id=a.index_id and a.plan_id = c.plan_id

WHERE a.plan_id = V_PLAN_ID and a.index_id= V_INDEX_ID

order by dn_value;

MYSQL:

declare curPlanIndex cursor for

SELECT a.INDEX_SCORE

,c.enum_value,c.dn_value,c.up_value,c.score,c.score_desc

FROM eval_plan_index a

JOIN eval_index_score c onc.index_id=a.index_id and a.plan_id = c.plan_id

WHERE a.plan_id = V_PLAN_ID and a.index_id= V_INDEX_ID

order by dn_value;

5、 selectinto 赋值

oracle 有exception错误处理

begin

select value_name into vc_num_unit fromsys_dict

where dict_code = 'szdw' and value_code =v_num_unit and rownum <=1 ;

exception

when no_data_found then

vc_num_unit := '';

end;

mysql 如果select 没有数据,则不执行into操作,变量值保持为上次结果,需要手工重置。最好能limit 1;只返回一条数据;

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多