Как бы я вызвал функцию, которая возвращает таблицу и принимает varchar? - PullRequest
6 голосов
/ 30 августа 2011

У меня есть функция, которую мне нужно использовать, я передаю переменную char и вставляю записи в таблицу с именем @ValueList.Однако я не уверен, как вызвать / использовать эту функцию?

ALTER FUNCTION [dbo].[GetListFromCSVString]
(            
      @csvString varchar(500)
)
RETURNS @ValueList TABLE 
(
      ListValue varchar(50)
)
AS
begin
      -- body

End

1 Ответ

7 голосов
/ 30 августа 2011
select ListValue
from dbo.GetListFromCSVString('1,2,3')

Результат:

ListValue
----------
1
2
3

Если параметром вашей функции является поле в другой таблице, вы должны использовать cross apply, чтобы получить список значений для каждой строки в исходной таблице.

-- Table to test on
declare @T table
(
  ID int identity primary key, 
  SomeColumn varchar(500)
)

-- Sample data
insert into @T values('1,2,3')
insert into @T values('a,b,c')

-- Use the function
select ST.ID,
       GL.ListValue
from @T as ST
  cross apply dbo.GetListFromCSVString(ST.SomeColumn) as GL

Результат:

ID          ListValue
----------- ----------
1           1
1           2
1           3
2           a
2           b
2           c
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...