让大家失望了,目前的答案似乎是:不能实现!
话说 mysql 都快到 6 了,早就号称支持存储过程了,可实际上呢!竟然不支持function中使用动态SQL 、更加不能返回数组或游标 !
这直接导致在其他数据库上轻松用存储过程实现的递归查询函数,在MYSQL上无法实现!(早在04年就可以在postgres数据库上实现树形递归相关函数了)
幸好有高人,大家对付着用用这个绕弯实现吧:
http://blog.sina.com.cn/s/blog_43ca06360100ibr6.html
http://dev.mysql.com/tech-resources/articles/hierarchical-data.html
----------
mysql 存储过程 function 有个大问题——不支持返回游标(或数组)!另外function里面还不能使用动态SQL!这两点,基本上把正常的function功能给废了!
另外没有split函数(这更加雪上加霜,导致连用function返回长字符串传递数组这种绕弯实现都成为不可能——返回了不能用函数套函数的方式分割成数组,不能直接写在WHERE里面,基本废了!)
我感觉MySQL始终就不是一个完整的数据库,真不明白为什么还这么流行???难道大家都是简单地把MySQL当平板文件+SQL引擎使用?
反之,几年前功能就已经堪比商业数据库的postgres在功能不断完善的同时,确远没有mysql流行!
(当年mysql3就不支持一些数据库的基本功能(事务、存储过程)、现在快到6了,号称全都支持了,不过明显功能缩水!相比另外一个免费开源数据库postgres明显是个半残)