这个怎么用实现?

hanjs 2008-06-05 03:02:00
if object_id('tree') is not null drop table tree

create table tree(id varchar(10),code varchar(10),name varchar(20),pid varchar(10))
insert into tree values ('1','01','A学校',null)
insert into tree values ('2','0101','计算机学院','1')
insert into tree values ('3','0102','外语学院','1')
insert into tree values ('4','02','B学校',null)
insert into tree values ('5','0201','建筑学院','4')
insert into tree values ('6','020101','城市规划','5')
insert into tree values ('7','0202','土木工程学院','4')
go

我想写一个函数,只有参数 pid
如果传入 null,则返回所以 id
否则返回此pid的所有下级 id

如传入 4

则返回
5
6
7

返回table类型的,如果能用递归最好了
...全文
138 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
hanjs 2008-06-05
  • 打赏
  • 举报
回复
我也服了,csdn的怎么总看不全帖子呢??

每次我都只能看到2楼。

怎么想的??

人家itpub就没有这个限制!
hery2002 2008-06-05
  • 打赏
  • 举报
回复
.......
hanjs 2008-06-05
  • 打赏
  • 举报
回复
函数内不允许
print
exec

太垃圾了吧
Herb2 2008-06-05
  • 打赏
  • 举报
回复
那就用存储过程吧
hanjs 2008-06-05
  • 打赏
  • 举报
回复
可是当我表名是动态传入的话,就只能用动态sql了。
Herb2 2008-06-05
  • 打赏
  • 举报
回复
疯子的可以呀。
hanjs 2008-06-05
  • 打赏
  • 举报
回复
我自己写出看来了

create function uf_getTree(@pid varchar(30))
returns @tree table(id varchar(30))
as
begin
if @pid is null
insert into @tree select id from tree
else
declare @sql varchar(500)
declare @id varchar(30)
declare cur cursor for select id from tree where pid=@pid
begin
--set @sql='declare cur cursor for select id from tree where pid='+@pid
--exec(@sql)
open cur
fetch cur into @id
while (@@fetch_status=0)
begin
insert into @tree values (@id)
insert into @tree select * from dbo.uf_getTree(@id)
fetch cur into @id
end
close cur
deallocate cur
end
return
end
go

可是注释的部分为何不能用动态的处理

报下面的错误

服务器: 消息 443,级别 16,状态 2,过程 uf_getTree,行 13
在函数内不正确地使用了 'EXECUTE'。

wzy_love_sly 2008-06-05
  • 打赏
  • 举报
回复
--测试数据
CREATE TABLE tb(ID char(3),PID char(3),Name nvarchar(10))
INSERT tb SELECT '001',NULL ,'山东省'
UNION ALL SELECT '002','001','烟台市'
UNION ALL SELECT '004','002','招远市'
UNION ALL SELECT '003','001','青岛市'
UNION ALL SELECT '005',NULL ,'四会市'
UNION ALL SELECT '006','005','清远市'
UNION ALL SELECT '007','006','小分市'
GO

--查询指定节点及其所有子节点的函数
CREATE FUNCTION f_Cid(@ID char(3))
RETURNS @t_Level TABLE(ID char(3),Level int)
AS
BEGIN
DECLARE @Level int
SET @Level=1
INSERT @t_Level SELECT @ID,@Level
WHILE @@ROWCOUNT>0
BEGIN
SET @Level=@Level+1
INSERT @t_Level SELECT a.ID,@Level
FROM tb a,@t_Level b
WHERE a.PID=b.ID
AND b.Level=@Level-1
END
RETURN
END
GO

--调用函数查询002及其所有子节点
SELECT a.*
FROM tb a,f_Cid('002') b
WHERE a.ID=b.ID
/*--结果
ID PID Name
------ ------- ----------
002 001 烟台市
004 002 招远市
--*/


看例子写吧,老写很麻烦哦...
内容概要:本研究针对微电网在遭受拒绝服务(DoS)攻击时面临的功率分配不均与电能质量问题,提出了一种兼顾功率精确均分与电压频率质量恢复的抗攻击混合动态事件触发二次控制策略。该策略通过设计新型混合动态事件触发机制,有效减少控制器与分布式单元间的网络通信负担,同时增强系统对DoS攻击的鲁棒性。研究构建了完整的微电网二次控制框架,整合了分布式协同控制算法与事件触发通信机制,在保证系统稳定性的同时,实现了对频率、电压偏差的快速调节和有功/无功功率的精确分配。通过Simulink平台进行仿真实验,验证了所提方法在遭受DoS攻击及正常运行工况下均能有效维持微电网的稳定运行与高质量电能输出。; 适合人群:具备电力系统自动化、分布式控制或微电网相关基础知识,从事新能源、智能电网领域研究的研发人员及高年级研究生。; 使用场景及目标:① 解决微电网在通信受限及网络攻击场景下的协同控制难题;② 实现微电网在异常工况下功率均分与电能质量的双重优化;③ 为设计高安全性、高可靠性的智能微电网控制系统提供理论依据与仿真验证方案。; 阅读建议:本资源侧重于控制策略的设计与仿真验证,建议读者结合微电网基础理论与Simulink仿真技术,深入理解事件触发机制与抗DoS攻击控制算法的实现细节,并动手复现仿真案例以加深对系统动态性能与鲁棒性的认识。
内容概要:本文围绕《【太阳能学报EI复现】基于粒子群优化算法的风-水电联合优化运行分析(Matlab代码实现)》展开,系统阐述了采用粒子群优化算法(PSO)对风能与水力发电系统进行联合优化调度的研究方法与技术路径。研究聚焦于构建多能源互补协调的优化模型,详细论述了目标函数的设计、系统约束条件的处理、算法求解流程及收敛性分析,并通过Matlab编程实现了完整的仿真验证过程,有效提升了可再生能源系统的运行效率与稳定性。该工作属于电力系统智能优化领域,强调对高水平期刊论文的高精度复现,兼具理论深度与工程实用性,适用于科研复现、学术研究与教学参考。; 适合人群:具备一定电力系统基础知识和Matlab编程能力的研究生、科研人员及从事新能源优化调度、智能算法应用的工程技术人员。; 使用场景及目标:①用于复现《太阳能学报》等高水平期刊中关于风-水电联合调度的EI/SCI论文;②掌握粒子群算法在多源协同优化中的建模、编码与求解关键技术;③辅助完成学位论文、科研项目申报或学术竞赛中的仿真建模任务; 阅读建议:建议结合文中提供的网盘资源下载完整代码与文档资料,按照目录结构循序渐进学习,重点关注算法实现细节、电力系统建模逻辑与参数设置方法,同时可延伸学习灰狼优化算法、YALMIP工具包等先进优化技术,以全面提升科研仿真与创新能力。

22,296

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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