Mysql和Oracle自定义函数区别

1.Mysql 自定义函数

drop function if exists get_date;
create function get_date(v_datetime datetime, v_time varchar(50))
returns varchar(50)
begin
	declare v_date varchar(50);
	declare cDate varchar(50);
	declare beginDate varchar(50);
	set cDate = date_format(v_datetime, '%Y-%m-%d %h:%i:%s');
	set beginDate = concat(date_format(v_datetime, '%Y-%m-%d'), ' ', v_time);
	if cDate < beginDate then
		set v_date = date_format(date_add(v_datetime, interval -1 day),'%Y-%m-%d');
	else 
		set v_date = date_format(v_datetime, '%Y-%m-%d'); 
	end if;
	return v_date;
end;

2. Oracle下自定义函数

CREATE OR REPLACE FUNCTION get_date(v_datetime date, v_time varchar2)
return varchar2
AS
	v_date varchar2(50);
	cDate varchar2(50);
	beginDate varchar2(50);
begin
	cDate := TO_CHAR(v_datetime, 'YYYY-MM-DD hh24:mi:ss');
	beginDate := TO_CHAR(v_datetime, 'YYYY-MM-DD') || ' ' || v_time ;
	if cDate < beginDate then
		v_date := TO_CHAR(v_datetime-1,'YYYY-MM-DD');
	else 
		v_date := TO_CHAR(v_datetime, 'YYYY-MM-DD'); 
	end if;
	return v_date;
end;

3. 区别

  1. Mysql没有 create or replace function, 可以用drop ...代替
  2. Mysql是returns而 Oracle是return
  3. Mysql是varchar , Oracle是 varchar2
  4. Mysql 没有as,用的是declare声明变量 ; 定义变量在begin之内, Oracle有 as, 变量定义在as之后
  5. Mysql设置变量值用的是 set XXX = ... 而Oracle是 XXX := ....
  6. Mysql使用now(),而Oracle是sysdate
  7. 日期处理的一些不同,比如像使用date_format而不是to_char, 这里要用date_add处理日期-1,而Oracle只要直接-1处理即可
  8. Oracle中支持隐式声明,但是Mysql必须要显式声明!!!
posted @   DawnTraveler  阅读(26)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示