У меня есть эта функция, но я хотел передать таблицу, чтобы использовать ту же функцию для выполнения работы для нескольких таблиц. Например, я хочу, чтобы эта функция работала для table1 и table2. Но в настоящее время это только для table1. Я тщетно пытался использовать динамик c sql; он не передает выбранный параметр. Может кто поможет? Дайте мне руководство, как передать таблицу в качестве параметра.
Пример данных, table1
CREATE TABLE table1 (id int identity (1,1), name varchar(60))
INSERT INTO table1
VALUES ('a1, a2, a9, a8')
Пример данных, table2
CREATE TABLE table2 (id int identity (1,1), name varchar(60))
INSERT INTO table2
VALUES ('a1, a2, a9, a8')
Функция:
CREATE FUNCTION f_split
(@id INT)
RETURNS @ab
TABLE (name VARCHAR(20),
ab1 VARCHAR(5)
)
AS
BEGIN
DECLARE @temp TABLE (rn INT, name VARCHAR(5))
INSERT INTO @temp(rn, name)
SELECT ROW_NUMBER() OVER(ORDER BY LTRIM(RTRIM(Split.a.value('.', 'NVARCHAR(MAX)'))) ASC) rn, LTRIM(RTRIM(Split.a.value('.', 'NVARCHAR(MAX)'))) Result
FROM
(
SELECT CAST('<X>'+REPLACE([name], ',', '</X><X>')+'</X>' AS XML) AS String
FROM table1 where id = @id
) AS A
CROSS APPLY String.nodes('/X') AS Split(a)
ORDER BY 1
INSERT INTO @ab
SELECT * FROM @temp
RETURN
END
Это дает результат из таблицы 1.
SELECT * FROM F_SPLIT(1)
Но я хочу, чтобы та же функция работала и для таблицы 2.
Любая помощь приветствуется.