查询树型表函数的问题,崩溃啊

yunhaiC QQ654777694 2011-03-21 02:51:44

CREATE function f_pid1(@id int,@tablename varchar(30)) returns varchar(100)
as
begin
declare @re_str as varchar(100)
set @re_str = ''
select @re_str = name from @tablename where id = @id
while exists (select 1 from @tablename where id = @id and pid is not null)
begin
select @id = b.id , @re_str = b.name + ',' + @re_str from @tablename a , @tablename b where a.id = @id and a.pid = b.id
end
return @re_str
end


他说我没声明@tablename,这个是传过来的参数啊,郁闷,到底怎么改,也有网友说用exec动态执行,但是我改来改去还是有bug,请教啊

CREATE function f_pid1(@id int,@tablename varchar(20)) returns varchar(100)
as
begin
declare @re_str as varchar(100)
set @re_str = ''
exec('select '+@re_str+' = name from '+@tablename+' where id = '+rtrim(@id))
exec('while exists (select 1 from tb where id = '+rtrim(@id)+' and pid is not null)
begin
select '+rtrim(@id)+' = b.id , '+@re_str+' = b.name + '','' + '+@re_str+' from '+@tablename+' a , tb b where a.id = '+rtrim(@id)+' and a.pid = b.id
end')
return @re_str
end
...全文
126 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wokelv 2011-05-13
  • 打赏
  • 举报
回复
>>>> 函数里没法执行动态

那数据库里的 内部函数(Avg, Sum, Count等)怎么实现的..
求解..
  • 打赏
  • 举报
回复
至今没有完全解决
xiangchao107 2011-03-21
  • 打赏
  • 举报
回复
有高手解决了没有啊,正需要这方面的东西
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 acherat 的回复:]

存储过程也可以加参数!
[/Quote]

create Procedure f_pid1
@id int,
@tablename varchar(30),
@re_str varchar(100) output
as
begin
set @re_str = ''
select @re_str = name from @tablename where id = @id
while exists (select 1 from @tablename where id = @id and pid is not null)
begin
select @id = b.id , @re_str = b.name + ',' + @re_str from @tablename a , @tablename b where a.id = @id and a.pid = b.id
end
end

还是不行
AcHerat 2011-03-21
  • 打赏
  • 举报
回复
存储过程也可以加参数!
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 xiao_ai_mei 的回复:]

函数里没法执行动态
改存储过程吧
[/Quote]
但是我可能有其他表也需要用这个功能,我不能每次都要根据各个表写同样的功能啊,所以还是需要放在函数里面
Xiao_Ai_Mei 2011-03-21
  • 打赏
  • 举报
回复
函数里没法执行动态
改存储过程吧
内容概要:本文介绍了一种基于多目标粒子群算法(MOPSO)的微电网优化调度模型,综合考虑风能、光伏、储能系统、柴油发电机、燃气轮机以及与主电网之间的能量交互等多种分布式能源的协同运行。通过构建以运行成本最小化、碳排放最低化和系统可靠性最优化为目标的多目标优化模型,利用Matlab平台实现MOPSO算法求解,完成对微电网在不同运行场景下的能量管理与调度方案优化。该模型能够有效平衡经济性与环保性之间的关系,适用于含多类型分布式电源的复杂微电网系统,具有较强的工程应用价值和科研参考意义; 适合人群:具备一定电力系统基础知识和Matlab编程能力的研究生、科研人员及工程技术人员,尤其适合从事微电网、智能电网、综合能源系统、可再生能源集成与优化调度等领域研究的专业人士; 使用场景及目标:①用于多能源耦合微电网系统的协同优化调度研究;②支持多目标智能优化算法在能源系统中的建模与求解实践,帮助用户掌握MOPSO在实际工程问题中的应用方法;③为学术论文复现、毕业设计、科研项目开发提供完整的代码实例与技术支撑; 阅读建议:建议读者结合Matlab代码与理论文档,深入理解目标函数构建、约束条件处理及Pareto最优解集生成机制,重点关注算法参数设置、多目标权衡分析与结果可视化,并可通过调整能源配置或引入新约束进行二次开发与创新研究。

22,296

社区成员

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

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