博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
以表名为参数的存储过程
阅读量:5080 次
发布时间:2019-06-12

本文共 908 字,大约阅读时间需要 3 分钟。

CREATE PROCEDURE pro_RecursionChildList ( @PID int,--传入父级ID        @TableName varchar(50),--传入查询表名称        @IsShowParent bit --是否插入父级 )AS DECLARE @INDEX INT    CREATE TABLE #T (ID VARCHAR(10),Name VARCHAR(50),PARENTID VARCHAR(10),LEVEL INT) SET @INDEX=1        IF @IsShowParent=1    BEGIN        EXEC('INSERT INTO #T SELECT ID,NAME,PARENTID,0 FROM '+ @TableName+' WHERE ID='+@PID) --插入当前级别    END        EXEC('INSERT INTO #T  SELECT ID,NAME,PARENTID, '+@INDEX+' FROM '+@TableName+' WHERE PARENTID = '+@PID)--插入PID下一级的数据            WHILE @@ROWCOUNT>0    BEGIN        SET @INDEX=@INDEX+1        EXEC('INSERT INTO #T SELECT T1.ID,T1.NAME,T1.PARENTID, '+@INDEX+' FROM '+ @TableName+' T1,#T          WHERE T1.PARENTID= #T.ID AND  #T.LEVEL= '+@INDEX+' -1')   END SELECT * FROM #T GO

经常要为每一个类似的表写一递归个函数 很麻烦,这样解决了不少问题。表结构要为ID,NAME,PARENTID。

调用结果:

转载于:https://www.cnblogs.com/encore620/archive/2012/03/26/2417483.html

你可能感兴趣的文章
不知道做什么时
查看>>
matlab 给某一列乘上一个系数
查看>>
密码学笔记——培根密码
查看>>
Screening technology proved cost effective deal
查看>>
MAC 上升级python为最新版本
查看>>
创业老板不能犯的十种错误
查看>>
Animations介绍及实例
查看>>
判断请求是否为ajax请求
查看>>
【POJ2699】The Maximum Number of Strong Kings(网络流)
查看>>
spring boot配置跨域
查看>>
BZOJ 1996 合唱队(DP)
查看>>
进击吧!阶乘——大数乘法
查看>>
安卓学习资料推荐-25
查看>>
Mysql数据库备份和还原常用的命令
查看>>
关于退出当前页面在火狐的一些问题
查看>>
【项目实施】项目考核标准
查看>>
spring-aop AnnotationAwareAspectJAutoProxyCreator类
查看>>
经典入门_排序
查看>>
Redis Cluster高可用集群在线迁移操作记录【转】
查看>>
二、spring中装配bean
查看>>