将存储过程转换为用户定义函数

时间:2016-02-03 06:18:08

标签: sql sql-server sql-server-2014-express

我正在尝试将一个过程转换为从表中选择n个参数的函数,并且对于每个n,从另一个表中选择k个列名。它最终必须创建一个包含一些固定列+ n * k列的表,这些列随输入参数而变化。每个n的k也不同。我使用动态创建的查询编写了该过程。

对于该函数,我想我可以运行游标或while循环来获取每个n并将相应的列名称提供给表变量。声明变量并在循环内设置它们的值感觉就像是有效的方法。

最后,我将转动变量并将它们连接起来形成所需的表格。 问题在于此。声明,或者即使我已经声明了它们,然后按顺序调用循环中的表变量来分配它们。

{
Declare @plan_section table (
    Roll identity (1,1)
    Plan_id int
    Plan_section_id int
)

Insert into @plan_section
Select plan_id, plan_section_id from t_plan_section where plan_id=@plan_id

Declare @n int, @plan_count int
Set @n =1
Set @plan_count = (select count(plan_section_id) from t_plan_section where plan_id = @plan_id)

While @n<@plan_count
Begin

Declare  Variable_’+cast(@n, varchar(2))+’       table ( ‘@plan_section_name’ varchar(100) )
Insert into     variable_’+@n+’
Select metric from t_plan_section_metric a join @plan_section b using(plan_section_id) where b.roll = @n

set @n = @n+1

End
}

这是我用过的但没有用的查询摘录。

请考虑每个plan_id对应n个计划部分,并将k列名称检索到循环内声明的n个表变量中。 欢迎任何和所有建议。如果您有其他方法,请务必分享。

0 个答案:

没有答案