将函数结果分配给表变量

Dha*_*ana 2 sql stored-procedures dynamic-queries

SQL Server (2000/2005) 函数获取表名和字段名作为参数,并从函数内的动态查询返回结果。结果应该分配给一个Table变量,该变量将在存储过程中进一步使用。如何实现这一目标?

我收到错误消息:“只能从函数内部执行函数和扩展存储过程。”

Declare @Data as table (FieldValue varchar(100))
insert into @Data select * from MyFunction ('Person.Address','AddressID')     

-- Function
Alter function MyFunction (
   @TableName varchar(100), @FieldName varchar(100) 
) returns @GetData table (
   FieldValue  varchar(100) 
) as
begin
        Declare @SQL varchar(250)
        Set @SQL = 'Select '+@FieldName+ ' from '+ @TableName
        Exec sp_executesql @SQL     
        return
end
Run Code Online (Sandbox Code Playgroud)

gre*_*reg 8

只是为了关闭循环......

这是调用函数并将这些结果放入表变量的语法

以@simons 解决方案为基础的小型构建

这在 sql2012 和 sql2014 上运行。

[不要忘记关闭 table 语句。如果您将表格全部放在一行上,就很容易做到。]

declare @t table(field1  nvarchar(100) )

insert @t select * from dbo.Cool_1Field_Function( 'parm1' ,'parm2')
select * from @t
Run Code Online (Sandbox Code Playgroud)