还有另一种方法可以做到这一点。为何不使用函数拆分参数,而不是将值传递给动态查询?
一旦选择了其中一个功能,就可以简单地重写存储过程,而无需在其中创建动态查询。
CREATE PROCEDURE dbo.CitiesGroup
@Cities NVARCHAR(Max) -- this are the parameters
AS
BEGIN
-- simplified query
-- write your complex logic here
SELECT ID, City
FROM MyTables
WHERE City IN (SELECT Item FROM dbo.SplitStrings_CTE(@Cities, N',');)
END
用法:
EXEC dbo.CitiesGroup 'London'
GO
EXEC dbo.CitiesGroup 'London,New York,Paris'
GO