純 sql 無限級 樹形結構 生成 和 判斷

2021-06-16 00:24:25 字數 1448 閱讀 7307

set quoted_identifier on

goset ansi_nulls on

goalter  proc stkd_ys_ysxm_insert

@編號 varchar(255),

@名稱 varchar(255),

@對應科目 int,

@餘額方向 bit,

@是否現金流 bit,

@備註 varchar(255),

@使用者id int,

@明細 bit,

@結果 varchar(255) output

asdeclare @位置 int,@級數 int,@編號_ varchar(255),@父級編號 varchar(255),@父級id int,@重複判斷 int

select @重複判斷=count(*) from stkd_ys_ysxm where @編號=fnumber

if @重複判斷<1

begin

if left(@編號,1)<>'.' and right(@編號,1)<>'.'

begin

set @級數=len(@編號)-len(replace(@編號,'.',''))+1

set @編號_=reverse(@編號)

set @位置 = patindex('%.%', @編號_)

set @父級編號 = substring(@編號_,@位置+1, len(@編號_))

set @父級編號=reverse(@父級編號)

select @父級id=fid from stkd_ys_ysxm where fnumber=@父級編號

if @父級編號=@編號

set  @父級id=0

if @父級id is not null

begin

begin tran 

insert into stkd_ys_ysxm(fparentid,fdetail,flevel,fnumber,fname,faccountid,fdc,fxjll,fexplanation,fuserid,fdate)

values(@父級id,@明細,@級數,@編號,@名稱,@對應科目,@餘額方向,@是否現金流,@備註,@使用者id,getdate())

if @@error<>0

begin

rollback transaction

set @結果='此次操作失敗!'

endelse

set @結果='此次操作成功!'

commit tran

endelse

set @結果='上級組不存在!'

endelse

set @結果='編號格式錯誤!'

endelse

set @結果='該編號已經存在!'

goset quoted_identifier off

goset ansi_nulls on

go

php遞迴無限級樹形結構

array id 1,pid 0,name 這是主類 id 2,pid 0,name 這是主類 id 3,pid 1,name 父級為1子類 id 4,pid 2,name 父級為2子類 id 5,pid 3,name 父級為3子類 function tree array,pid tree v re...

無限級樹形導航

表 userinfo id id name 導航名稱 superiorid 上級導航id using system using system.collections using system.configuration using system.data using system.linq usin...

js無限分級 樹 原生js生成無限級樹形選單

設計思路 要生成選單的源資料往往是乙個樹形資料結構 若不是也可以轉換成樹形結構 那我們一起寫部落格吧 因為源資料結構和目標選單結構都為樹形結構,所以其實我們要做的就是資料結構的轉譯,即將js樹形資料轉換為 ul,li 拼接成的樹形選單。在這裡我們通過樹的深度優先遍歷方式來完成這次轉義操作。結構 轉義...