1

有什麼方法可以創建一個自定義函數,該函數使用動態創建的SQL語句返回一個表?在表值函數中使用SQL Server 2008上的動態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 

但在執行該功能時只是得到一個錯誤。

希望有人能幫助我。

感謝,

克里斯

+4

不能在函數中使用動態SQL,對不起。 – 2013-04-04 18:17:28

+1

[從函數調用動態SQL]的可能重複(http://stackoverflow.com/questions/9607935/call-dynamic-sql-from-function);另請參見[在SQLServer 2005函數中執行動態SQL](http://stackoverflow.com/questions/150552) – mellamokb 2013-04-04 18:24:17

回答

0

您可以使用CLR了點。但是,在普通的T-SQL中沒有辦法做到這一點。

+1

至少不在函數中。例如,在存儲過程中將是可能的。 – mellamokb 2013-04-04 18:25:43

相關問題