MYSQ 自定义函数

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zengsange/article/details/80267791

DELIMITER $$ 

DROP TABLE IF EXISTS TEST

CREATE FUNCTION getCatergoryName(input VARCHAR(32)) RETURNS varchar(80) CHARSET utf8
BEGIN
DECLARE fisrtCatergoryName VARCHAR(80) DEFAULT '';
DECLARE secondCatergoryName VARCHAR(80) DEFAULT '';
DECLARE thirdCatergoryName VARCHAR(80) DEFAULT '';
select CATEGORYNAME from B2B_MATERIAL_CATEGORIES where CATEGORYNO=substring(input,1,7)  into thirdCatergoryName;
select CATEGORYNAME from B2B_MATERIAL_CATEGORIES where CATEGORYNO=substring(input,1,5)  into secondCatergoryName;
select CATEGORYNAME from B2B_MATERIAL_CATEGORIES where CATEGORYNO=substring(input,1,3)  into fisrtCatergoryName;
RETURN CONCAT(fisrtCatergoryName,'--',secondCatergoryName,'--',thirdCatergoryName); 
END $$
DELIMITER ;


DELIMITER $$ 

DROP TABLE IF EXISTS TEST

CREATE FUNCTION getAreaName (input VARCHAR(32)) 
RETURNS VARCHAR(80)  
BEGIN  
DECLARE _value VARCHAR(80) DEFAULT '';  
select AREANAME from ds_area_info where AREANO=input  into _value;
RETURN _value;  
END $$ 

DELIMITER ;


DELIMITER $$ 
CREATE FUNCTION getAreaName (input VARCHAR(32)) 
RETURNS VARCHAR(80)  
BEGIN  
DECLARE _value VARCHAR(80) DEFAULT '';  
select AREANAME from ds_area_info where AREANO=input  into _value;
RETURN _value;  
END $$ 
DELIMITER ;

BELIMITER $$是定义一个结束标识符,因为MySQL默认是以分号作为SQL语句的结束符的,而函数体内部要用到分号,所以会跟默认的SQL结束符发生冲突,所以需要先定义一个其他的符号作为SQL的结束符;

DROP TABLE IF EXISTS TEST是如果这个函数已经存在了,就删除掉,TEST是数据库的名字,

CREATE FUNCTION是创建一个函数,()里是参数的名字和类型,RETURNS 定义这个函数返回值的类型;

函数体必须放在BEGIN END之间;

DECLARE 是定义函数体的变量,;

RETURN 是返回值,类型必须与DECLARE中定义的返回类型一致。




猜你喜欢

转载自blog.csdn.net/zengsange/article/details/80267791
今日推荐