Tsql 不知道如何调用我的函数
当我选择我的数据时,我可以做一个简单的连接来解析一些列的值,但不是所有列的值。我的大多数列都有一个数据值,如10997,但其他列有多个数据值,如10997、10889、10123。我已经创建了一个函数来解析文本中的三个独立值,但是我在尝试如何使用它时遇到了困难 我有一个这样的基本连接: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
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。然后更改函数以返回字符串。