http://my.oschina.net/u/178116/blog/684608
-- 名称:mysql递归查询存储过程(2014-04-05)
-- 入:@table 表名[varchar(200)]
-- 入:@field 要查询返回的字段名(例如: name,age,remark)[text]
-- 入:@order 返回结果的排序(例如 name desc,age asc)[text]
-- 入:@idName 主键列名[varchar(200)]
-- 入:@pidName父键列名[varchar(200)]
-- 入:@id 主键值[varchar(200)],不能为null,如果值是null,说明要查询全部,请自己查询
-- 入:@upDown 向上级联还是向下级联,1=上 0=下[int]
-- 入:@self 是否包含自己 1=是 0=否[int]
-- 返回查询结果集
DROP PROCEDURE IF EXISTS Query_Dg;
CREATE PROCEDURE Query_Dg
(
IN table_ VARCHAR(200),
IN field_ TEXT,
IN order_ TEXT,
IN idName_ VARCHAR(200),
IN pidName_ VARCHAR(200),
IN id_ VARCHAR(200),
IN upDown_ INT,
IN self_ INT
)
BEGIN
DECLARE _sqlStr VARCHAR(4000); -- 动态sql
DECLARE _idParam VARCHAR(4000); -- id存放的变量
DECLARE _idSet VARCHAR(4000); -- 结果
SET @_idSet = '';
-- 查询id开始
IF(self_ = 1)THEN -- 包含自己
SET @_idSet = id_;
END IF;
-- 递归开始
IF(upDown_ = 1)THEN -- 向上递归
SET @_sql = CONCAT('SELECT ',pidName_,' INTO @_idParam FROM ',table_,' WHERE ',idName_,' = ?');
ELSE -- 向下递归
SET @_sql = CONCAT('SELECT GROUP_CONCAT(',idName_,') INTO @_idParam FROM ',table_,' WHERE FIND_IN_SET(',pidName_,', ?) > 0');
END IF;
SET @_idParam = id_; -- 输入参数使用时不能 @
PREPARE _sqlStr FROM @_sql;
EXECUTE _sqlStr USING @_idParam;
WHILE @_idParam IS NOT NULL DO
SET @_idSet = CONCAT(@_idSet,',',@_idParam);
EXECUTE _sqlStr USING @_idParam;
END WHILE;
-- 查询id结束
SET @_sql = CONCAT('SELECT ',field_,' FROM ',table_,' WHERE FIND_IN_SET(',idName_,', ? ) > 0 order by ',order_); -- 查询
DEALLOCATE PREPARE _sqlStr; -- 解除预编译
PREPARE _sqlStr FROM @_sql; -- 重新预编译
EXECUTE _sqlStr USING @_idSet;
DEALLOCATE PREPARE _sqlStr;
END
分享到:
相关推荐
mysql级联更新和级联删除,区分有级联和没级联操作的区别之处
最新最完整的中英法文ISO3166世界行政区划MySQL级联表,包含中国
做项目时整理的,上传给大家分享一下,数据库自己建吧就不上传了,应该都能看明白
利用javascript+json实现级联查询
2015年最新最全的省市区街道级联查询
mysql ajax 级联操作。本案例可以很灵活的使用任何级别的级联操作.基于ssh框架的
NULL 博文链接:https://devintan110.iteye.com/blog/849678
基于JSON级联查询(修改)省 市 区 (代码写的比较烂,希望大家指导共同学习) 写了两个例子(1.选择省市区操着,2.在已选好省市区的情况下修改地址)
省市区sql文件 单表
使用jsp脚本语言实现三级级联查询,效果,当你选择某一个省,相应显示该省的市,选择市,就相应弹出县
ajax+ssh 实现省份城市级联查询 应用实例
虽然Hibernate不怎么流行了不过有兴趣的可以看看
行政区域级联查询js,可引用至网页。。
ssm框架,包括级联查询、商品上下架,小型项目拿来即用,有运行环境就行(jdk,myEclipse、mysql、tomcat),无版本冲突,内含sql。
在数据库MySQL中利用外键实现级联删除、更新等方面的内容。有兴趣可以看看。。
此数据总共含有46963条数据,是一个省、市/区、县、乡/镇(部分含有街道)的Mysql全国四级区域数据。
所谓级联复制就是master服务器,只给一台slave服务器同步数据,然后slave服务器在向后端的所有slave服务器同步数据,降低master服务器的写压力,和复制数据的网络IO。 一,配置master服务器 1,修改主配置文件 vim...
级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单
用jquery的ajax实现的二级级联查询,其中用jsp或者servlet动态生成xml文件,然后再用jquery来解析xml获取其中的数据~~
android sqlite动态绑定城市三级联包含三级城市级联mysql数据源包含了sql语句,spinner绑定sqlite三级城市数据级联