2011-05-29 23 views
1

我想修改我的內聯函數,以便它可以處理兩個變量作爲輸入。只有一個它工作得很好。在sql(server 2008)內聯函數中定義幾個輸入變量

FUNCTION [dbo].[TBL_UDF_HowOften] 
( 
-- Add the parameters for the function here 
@membername as varchar(15), 
@tablename as varchar(15) 
) 
RETURNS @ergebnis TABLE 
(
participated   float, 
percent     float, 
WonWen1     float, 
WonWen2     float, 
WonWen3     float 
) 

AS 
BEGIN 

    DECLARE @wintimes  float 
    DECLARE a lot of other stuff... 

    SELECT @wintimes = COUNT(DidWin) 
    FROM @tablename 
    WHERE DidWin = 1 AND membername = @membername 

... and so on 

那麼@membername被識別,但@tablename被標記爲「必須聲明表變量」@tablename「。」

+2

SQL不允許表名作爲變量 - 這需要動態SQL才能起作用。 – 2011-05-29 17:12:33

+0

有沒有解決方法? – Lumpi 2011-05-29 17:15:23

+1

除了正確的編碼或已經提到的內容? – 2011-05-29 17:16:34

回答

4

您不能在'from'子句中使用標量變量作爲表名。你將需要使用動態SQL,我不認爲可以在一個函數內完成。