1. 程式人生 > >mysql自定義函數

mysql自定義函數

host key 是否 ble sea 判斷語句 bin iter str

1、先查看函數功能是否開啟:show variables like ‘%func%‘;

若是未開啟則:SET GLOBAL log_bin_trust_function_creators=1;

關閉則是:SET GLOBAL log_bin_trust_function_creators=0;

2、自定義函數:

delimiter $$;

這個函數是合並兩個字符串

delimiter $$;
DROP FUNCTION IF EXISTS addMaterialName $$;
CREATE FUNCTION addMaterialName(materialName VARCHAR(255),cheName VARCHAR(255))
RETURNS VARCHAR(255)
BEGIN
DECLARE newName VARCHAR(255) DEFAULT ‘‘;
IF(ISNULL(materialName) or materialName =‘‘) THEN set newName = cheName;
ELSEIF (ISNULL(cheName) or TRIM(cheName) =‘‘)
THEN set newName = materialName;
ELSE set newName = CONCAT(materialName,‘(‘,cheName,‘)‘);
END IF;
RETURN newName;
END $$;
delimiter ;

3、查看函數:

show function status;

其它自定義函數:


SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Function structure for caseChoose
-- ----------------------------
DROP FUNCTION IF EXISTS `caseChoose`;
DELIMITER ;;
CREATE DEFINER=`root`@`localhost` FUNCTION `caseChoose`(`chooseNum` int) RETURNS int(11)
BEGIN
-- case 選擇欲絕
case chooseNum
when 1 THEN RETURN 100;
when 2 THEN RETURN 200;
else RETURN 300;
end case;
END
;;
DELIMITER ;

-- ----------------------------
-- Function structure for forNum
-- ----------------------------
DROP FUNCTION IF EXISTS `forNum`;
DELIMITER ;;
CREATE DEFINER=`root`@`localhost` FUNCTION `forNum`(`chooseNum` int) RETURNS int(11)
BEGIN
-- loop1 :標誌位:開始循環
loop1: LOOP
SET chooseNum=chooseNum+1;
IF chooseNum=100
-- 跳出本次循環
then ITERATE loop1;
elseif chooseNum = 200
-- 跳出循環
THEN LEAVE loop1;
-- if要有結束語句否則錯誤
end if;
-- 結束循環 標誌位
end loop loop1;
-- 返回內容
RETURN chooseNum +1;
END
;;
DELIMITER ;

-- ----------------------------
-- Function structure for forNumRepeat
-- ----------------------------
DROP FUNCTION IF EXISTS `forNumRepeat`;
DELIMITER ;;
CREATE DEFINER=`root`@`localhost` FUNCTION `forNumRepeat`(`chooseNum` int) RETURNS int(11)
BEGIN
-- REPEAT語句是有條件控制的循環語句。當滿足特定條件時,就會跳出循環語句
-- [begin_label:] REPEAT
-- statement_list
-- UNTIL search_condition
-- END REPEAT [end_label]
REPEAT
SET chooseNum=chooseNum+1;
-- 當數據為100的時候結束語句
UNTIL chooseNum=100
END REPEAT ;
RETURN chooseNum + 2;
END
;;
DELIMITER ;

-- ----------------------------
-- Function structure for forNumWhile
-- ----------------------------
DROP FUNCTION IF EXISTS `forNumWhile`;
DELIMITER ;;
CREATE DEFINER=`root`@`localhost` FUNCTION `forNumWhile`(`chooseNum` int) RETURNS int(11)
BEGIN
-- while do 語句:
WHILE chooseNum<100 DO
SET chooseNum=chooseNum+1000;
END WHILE ;
return chooseNum;
END
;;
DELIMITER ;

-- ----------------------------
-- Function structure for ifNum
-- ----------------------------
DROP FUNCTION IF EXISTS `ifNum`;
DELIMITER ;;
CREATE DEFINER=`root`@`localhost` FUNCTION `ifNum`(`id` int,`num` int) RETURNS int(11)
BEGIN
-- if 條件判斷語句
if id < 3 THEN RETURN id;
ELSEIF num > 3 then RETURN num;
else RETURN 123;
end if;
END
;;
DELIMITER ;

mysql自定義函數