当前位置: 代码迷 >> MySQL >> MySql Create Function <1>
  详细解决方案

MySql Create Function <1>

热度:243   发布时间:2016-05-05 16:30:23.0
MySql Create Function <1>
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

  相关解决方案