Tsql 不知道如何调用我的函数

Tsql 不知道如何调用我的函数,tsql,sql-server-2008-r2,Tsql,Sql Server 2008 R2,当我选择我的数据时,我可以做一个简单的连接来解析一些列的值,但不是所有列的值。我的大多数列都有一个数据值,如10997,但其他列有多个数据值,如10997、10889、10123。我已经创建了一个函数来解析文本中的三个独立值,但是我在尝试如何使用它时遇到了困难 我有一个这样的基本连接: SELECT COLUMN1, COLUMN2, COLUMN3 FROM TABLE1 A JOIN TABLE2 B ON A.ID = B.ID 结果如下所示: Column1 Colu

当我选择我的数据时,我可以做一个简单的连接来解析一些列的值,但不是所有列的值。我的大多数列都有一个数据值,如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       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')

你什么也不退


RETURN@outList

如果您没有提供代码,我们应该如何告诉您如何使用您编写的函数,以便我们看到您的要求?不,基本联接的结果看起来不是这样。您希望函数作为输出生成的结果是错误的。它需要返回一个包含逗号分隔的值列表的VARCHAR,而不是一个表,以便按照您的需要使用。这是否意味着我需要将其设置为存储过程?他正在创建一个VARCHAR。他只是不返回它。这会产生一个错误:将varchar值“Facebook,Email,Flyer”转换为数据类型int时,转换失败。这是因为RETURN是int,而不是string。然后更改函数以返回字符串。