求一存储过程,急用。小女子在这里先多谢了!

skylovejjp 2010-11-19 10:14:57
现有一分类表,字段:id int,cpame varchar(50),ts varchar(50),tn varchar(50)(父id),tj(层次数) int
数据如下:
id cpname, ts, tn, tj
1 农林牧副渔| 1| 0 1
2 农林牧副渔|农业机械| 1|2| 1 2
3 农林牧副渔|农业机械|aa 1|2|3 2 3

.............


现在需要写一个添加数据的存储过程,希望大虾们多多帮忙啊!多谢了!
...全文
136 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
luoyefeng1022 2010-11-19
  • 打赏
  • 举报
回复
你表结构设计的有些不合理;
这类树结构,你需要记录的是父ID就Ok了!
你这中结构,保存数据麻烦,取树结构也麻烦!
飘零一叶 2010-11-19
  • 打赏
  • 举报
回复
IF OBJECT_ID('TB') IS NOT NULL
DROP TABLE TB
GO
CREATE TABLE TB
(
ID INT PRIMARY KEY, --节点ID
CPNAME NVARCHAR(50),
TS VARCHAR(50),
TN INT, --父节点ID
TJ INT,
CHECK(ID<>TN)
)
ALTER PROC USP_INSERTTEMP
@ID INT,
@CPNAME NVARCHAR(50),
@TS VARCHAR(50),
@TN VARCHAR(50)
AS
BEGIN
IF @TN='0'
BEGIN
INSERT INTO TB
SELECT @ID,@CPNAME+'|',@TS+'|',@TN,1
END
ELSE
BEGIN
IF NOT EXISTS(SELECT 1 FROM TB WHERE ID=@TN)
PRINT '表中不存在父节点'+@TN+''
INSERT INTO TB
SELECT @ID,CPNAME+@CPNAME+'|',TS+@TS+'|',@TN,TJ+1 FROM TB
WHERE ID=@TN
END
END

USP_INSERTTEMP 1,'农林牧副渔','1',0
USP_INSERTTEMP 2,'农业机械','2',1
USP_INSERTTEMP 3,'农业机械','2',2
SELECT * FROM TB


DROP TABLE TB
GELEI180 2010-11-19
  • 打赏
  • 举报
回复
定义个变量 取得本行ID
set @path = Convert(varchar(50),@@identity+1) + '|'
skylovejjp 2010-11-19
  • 打赏
  • 举报
回复
多谢大家了,已经解决。
dawugui 2010-11-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 chuifengde 的回复:]
云雾之中
[/Quote]这种地方也只有你才去得了。羡慕啊。
skylovejjp 2010-11-19
  • 打赏
  • 举报
回复
只需要增加数据的存储过程,ts是父id路径的组合, tn是父id
viqn7qdnt 2010-11-19
  • 打赏
  • 举报
回复
同上,只看到要增加数据的要求,其他的没看明白,单纯的增加数据?
dawugui 2010-11-19
  • 打赏
  • 举报
回复
什么意思?没看懂。帮顶。

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧