2014-07-08 76 views
-1

當我選擇我的數據時,我可以做一個簡單的連接來解析一些列的值,但不是全部。我的大多數列都有一個數據值,如10997,但其他列有多個數據值,如10997,10889,10123。我創建了一個函數來解析我需要的文本中的三個單獨值,但我有試圖找出如何使用它的麻煩。不知道如何調用我的功能

我有一個基本的加入是這樣的:

SELECT COLUMN1, COLUMN2, COLUMN3 
FROM TABLE1 A 
JOIN TABLE2 B ON A.ID = B.ID 

這樣做的結果會是這樣的:

Column1   Column2      Column3 
    1  11272, 11273, 11274, 11277   7712 

我創建使用函數聲明的變量和表變量。

我想什麼,能夠做的就是這樣的事情:

SELECT COLUMN1, dbo.MyFunction(COLUMN2), COLUMN3 
FROM TABLE1 A 
JOIN TABLE2 B ON A.ID = B.ID 

在由此產生:

Column1   Column2      Column3 
    1  Radio, Flyer, Internet, Bar   7712 

的問題是,我的函數使用的變量,我不能找到它在SQL中的位置(表值函數,存儲過程等),以便我可以使用它。每個領域都有其自身的侷限性。

編輯:這是我爲我的功能創建的代碼,目前它在一個多語句表值函數

DECLARE @looper INT, @res VARCHAR(100) 
DECLARE @outList VARCHAR(300) 

SET @outList = '' 

DECLARE @tmpa TABLE (Item INT) 

INSERT INTO @tmpa 
SELECT Item 
FROM fn_Split (', ', @input) 

SELECT @looper = MIN(Item) 
FROM @tmpa 

WHILE @looper IS NOT NULL 
    BEGIN 
     SELECT @res = NAME 
     FROM FSM_CustomFormSelectOptions CFSO 
     WHERE ID = @looper 
     --print @res 
     SET @outList = @outList + @res + ', ' 

     SELECT @looper = MIN(Item) FROM @tmpa WHERE Item > @looper 
    END 

    SET @outList = LEFT(@outList, LEN(@outList)-1) 

    INSERT INTO @Answers 
    VALUES(@outList) 

    RETURN 

示例調用:

select * from fn_GetAnswerText('11273, 11274, 11275') 
+0

我們該如何告訴你如何使用**你的功能** **你如果你沒有提供它的代碼,寫**,這樣我們可以看到你在問什麼? –

+0

沒有那個基本連接的結果看起來不像那樣。 – Paparazzi

+0

你的功能是錯誤的,你想要它產生的輸出。它需要返回一個VARCHAR,其中包含逗號分隔的值列表,而不是表格,以便按需使用。 –

回答

0

你不返回任何東西

RETURN @outList

+0

這會產生一個錯誤:將varchar值'Facebook,Email,Flyer'轉換爲數據類型int時轉換失敗。這是因爲RETURN是一個INT,而不是一個字符串 – Baub

+0

然後改變你的函數返回一個字符串。 – Paparazzi

相關問題