SQL 存储过程 :根据ID获取不包含自身和子项的项目

Posted 莫小麦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL 存储过程 :根据ID获取不包含自身和子项的项目相关的知识,希望对你有一定的参考价值。

USE [PrettyCloud]
GO
/****** Object:  StoredProcedure [dbo].[GetParentLevel]    Script Date: 04/20/2018 14:30:13 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

/**
功能:根据ID获取不包含自身和子项的项目
**/
ALTER Procedure [dbo].[GetParentLevel]
    @TableName    varchar(50)=‘‘,  --表名
    @Id            varchar(50)=‘‘,      --ID
    @Tj            varchar(50)=‘‘,   --关键字
    @Sx         varchar(50)=‘‘      --条件
as
begin
    declare @mainSql  varchar(max)
    if @Id is null
    begin
        set @Id=‘‘
    end
    set @mainSql=With org     
    set @mainSql=@mainSql+ as     
    set @mainSql=@mainSql+(    
    set @mainSql=@mainSql+ select * from +@TableName+ where Id=‘‘‘+@Id+‘‘‘‘
    set @mainSql=@mainSql+ Union all 
    set @mainSql=@mainSql+ select +@TableName+.* from org     
    set @mainSql=@mainSql+ join +@TableName
    set @mainSql=@mainSql+ on org.Id=+@TableName+.ParentId 
    set @mainSql=@mainSql+)    
    
    set @mainSql=@mainSql+ select * from +@TableName+ o 
    set @mainSql=@mainSql+ where o.DeleteMark is null and not exists      
    set @mainSql=@mainSql+(    
    set @mainSql=@mainSql+select id from org where Id=o.Id
    set @mainSql=@mainSql+) order by +@Tj+ +@Sx+     
    print @mainSql
    execute (@mainSql)
end

 

以上是关于SQL 存储过程 :根据ID获取不包含自身和子项的项目的主要内容,如果未能解决你的问题,请参考以下文章

需要sql或者存储过程根据flag获取数据吗?

sql server存储过程产生连续不重复编号

如何根据不同的条件执行不同的SQL语句

在其执行存储过程中查找Execute SQL任务组件ID

用于获取表名、视图和存储过程的 SQL 语句,按模式排序

sqlserver 存储过程 使用事务,说明在下边,求大神指教!