巧解如何编写可重用的MySQL查询(1)(2)
二、关于MySQL内置函数
GROUP_CONCAT()函数可以用来聚集表中的所有行,并返回组成交叉表水平轴的SELECT列表。实际上,这使得将交叉表的选择语句移植到存储过程中成为可能。其他的函数,如Count()、Month()和MonthName(),以及过滤语句,如CASE WHEN ELSE,都可以让我们的代码更具通用性。
三、建立自己的函数
如果在MySQL内建的函数中没有我们所想要的,那么我们不妨自己动手,丰衣足食。 在编写自己的函数的时候,一定要考虑到该函数的通用性。
下面是一个示例函数,用来检查是否指定了强制性的存储过程参数。这里不允许使用空行或者空白符,所以该函数将进行相应的检查:
BEGIN
DECLARE isEmpty TINYINT;
SET isEmpty = (param_name IS NULL or char_length(trim(param_name)) = 0);
RETURN isEmpty;
END
注意,在我们的函数中调用了内建的两个函数,即char_length()和trim()。现在,我们总能够将其作为一个通用函数使用了。
需要提示的是,在我们编写自己的函数之前,最好先在网上搜索一下,看看别人是否已经做过这项工作了,免得重复相同的工作。这时,我们要特别留意那些MySQL函数仓库站点,如www.mysqludf.org,我们很可能在这里找到所需的函数。






