【发布时间】:2010-10-02 15:03:02
【问题描述】:
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
【问题讨论】:
-
-1。不要这样使用动态Sql。参考 sommarskog:sommarskog.se/dynamic_sql.html
-
+1。 @David:他在问,没必要因为他错了而投反对票。
标签: sql stored-procedures dynamic-queries