小编典典

将函数结果分配给表变量

sql

SQLServer(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

阅读 175

收藏
2021-04-07

共1个答案

小编典典

我不确定这如何与函数一起使用,但是如果您有一个存储过程返回一个结果集,则可以使用INSERT EXEC语句将其插入到表变量中。

INSERT @TableVariable
EXEC spYourProcedure

只要字段匹配,那将起作用。否则,您可以使用:

INSERT @TableVariable (FieldInSp1, FieldInSp2)
EXEC spYourProcedure

这样,您可以在存储过程之间传递数据。有关某些其他信息,请参见INSERT
EXEC语句
上的此页面。

2021-04-07