如何在SQL Server中创建接受IN子句输入参数的表值用户定义函数?
我正在try 编写这个非常简单的函数:
CREATE FUNCTION dbo.MyTableValuedFunction (@myList VARCHAR(MAX))
RETURNS @myTable TABLE (
[ID] INT,
[Name] VARCHAR(MAX)
)
AS
BEGIN
INSERT INTO @myTable
SELECT ID, Name FROM MyTable WHERE ID IN (@myList)
RETURN
END
一种流行的生成式人工智能建议构建一个SQL字符串并使用‘exec’
CREATE FUNCTION dbo.MyTableValuedFunction (@myList VARCHAR(MAX))
RETURNS @myTable TABLE (
[ID] INT,
[Name] VARCHAR(MAX)
)
AS
BEGIN
DECLARE @sql NVARCHAR(MAX)
SET @sql = 'SELECT ID, Name FROM MyTable WHERE ID IN (' + @myList + ')'
INSERT INTO @myTable
EXEC sp_executesql @sql
RETURN
END
但当我try 运行它时,收到以下错误:在函数中无效使用副作用运算符‘INSERT EXEC’.
在表值用户定义函数中,有没有办法使用带有列表的IN子句作为输入参数?