在表值函数中使用 SQL Server 2008 中的动态 SQL 语句 [重复]
Posted
技术标签:
【中文标题】在表值函数中使用 SQL Server 2008 中的动态 SQL 语句 [重复]【英文标题】:Use dynamic SQL statement at SQL Server 2008 in tablevalue function [duplicate] 【发布时间】:2013-04-04 18:13:01 【问题描述】:有没有办法创建一个自定义函数,使用动态创建的 SQL 语句返回一个表?
到目前为止,我尝试过类似
ALTER function [dbo].[Test2] (@Mandant smallint)
RETURNS
@Ergebnis TABLE ([Kundennummer] int,[Suchbegriff] nvarchar(20))
AS
BEGIN
DECLARE @curTable cursor
DECLARE @str nvarchar(1024)
DECLARE @Kundennummer int;
DECLARE @Suchbegriff nvarchar(20);
SET @str = 'set @curTable = CURSOR FOR SELECT KdNr, Match FROM ADR_030 where KdNr <> 0; OPEN @curTable'
EXEC sp_executesql @str, N'@curTable cursor OUTPUT', @curTable OUTPUT
fetch next from @curTable into @Kundennummer, @Suchbegriff;
WHILE @@FETCH_STATUS = 0
BEGIN
insert into @Ergebnis values (@Kundennummer, @Suchbegriff)
FETCH NEXT FROM @curTable into @Kundennummer, @Suchbegriff;
END;
close @curTable;
deallocate @curTable;
return
end
但是在执行函数的时候却报错了。
希望有人可以在这里帮助我。
谢谢,
克里斯
【问题讨论】:
你不能在函数中使用动态SQL,对不起。 Call dynamic SQL from function 的可能副本;另见Executing dynamic SQL in a SQLServer 2005 function 【参考方案1】:您可以为此使用 CLR。但是,在纯 T-SQL 中无法做到这一点。
【讨论】:
至少不在函数中。例如,在存储过程中是可能的。以上是关于在表值函数中使用 SQL Server 2008 中的动态 SQL 语句 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
通过在 SQL Server 2000 中传递变量参数来加入表值函数
如何在 Python 中使用表值参数访问 SQL Server 2008 存储过程