DELIMITER $$CREATE FUNCTION 'function_name'( in_param1 VARCHAR(4), in_param2 CHAR(1)) RETURNS VARCHAR(60)BEGIN DECLARE local_param VARCHAR(60); SELECT TABLE_COLUMN INTO local_param FROM TABLE_NAME WHERE TABLE_COLUMN = in_param1; RETURN local_param;END$$;DELIMITER ;
?
DELIMITER $$CREATE FUNCTION `getIdLabelVersion`(idVersion BIGINT(20), localeParam VARCHAR(5)) RETURNS bigint(20) READS SQL DATABEGIN DECLARE idLabelVersion BIGINT(20); DECLARE defaultLocale VARCHAR(5); DECLARE defaultIdLabelVersion BIGINT(20); SELECT ID_LABEL_VERSION INTO idLabelVersion FROM RVRQTLABELVERSION WHERE ID_VERSION=idVersion AND LOCALE=localeParam; IF(ISNULL(idLabelVersion)) THEN SELECT DEFAULT_LOCALE INTO defaultLocale FROM RVRQTAODEFAULTLOCREF WHERE COUNTRY_CODE='FR'; SELECT ID_LABEL_VERSION INTO idLabelVersion FROM RVRQTLABELVERSION WHERE ID_VERSION=idVersion AND LOCALE=defaultLocale; END IF; RETURN idLabelVersion;END$$DELIMITER ;
?
注意:在调用函数的时候,传参必须符合参数的类型,否则得不到正确的结果;
? ? ?例如: 如果参数类型为 VARCHAR(4) ,则出入的参数不能超过4个字符
?
注意:“DELIMITER //”语句的作用是将MYSQL的结束符设置为//,因为MYSQL默认的语句结束符为分号;,为了避免与存储过程
中SQL语句结束符相冲突,需要使用DELIMITER 改变存储过程的结束符,并以“END//”结束存储过程。
存储过程定义完毕之后再使用DELIMITER ;恢复默认结束符。DELIMITER 也可以指定其他符号为结束符!!!!!!!!!!!
?
?
参考地址:http://www.cnblogs.com/lyhabc/p/3793524.html