大组变量 ID

large group of variable IDs

我有一个包含大量变量 ID 的工作查询。我想知道是否有办法从下面的查询中创建一个存储过程并传入一组 ID,而不是在我需要 运行 新查询时复制和粘贴每个 ID?

这是查询。 ID 一直在变化,所以我想找出一种更容易做到这一点的方法,但我运气不佳。

我考虑过在存储过程中使用游标并只传递每个 ID,但这似乎很麻烦且效率低下。

   SELECT gm.geoId, T.number As surveyID, 0 as SpeciesCount
   FROM ( 
    VALUES (1994328036),(1994328037),(1994328038),(1994328039),(1994328040),(1994328041),(1994328042),(1994328043),
           (1994328044),(1994328045),(1994328046),(1994328047),(1994328048),(1994328049),(1994328050),(1994328051),
           (1994328052),(1994328053),(1994328054),(1994328055)
    ) AS T(number)
   CROSS JOIN dbo.groupBiology gm

您可以像这样创建 table-valued function (TVF):

CREATE FUNCTION tvf_GetIDs ()
RETURNS 
@output TABLE ( data int )
AS
BEGIN
   INSERT INTO @output (data) VALUES
   (1994328036),(1994328037),(1994328038),(1994328039),
   (1994328040),(1994328041),(1994328042),(1994328043),
   (1994328044),(1994328045),(1994328046),(1994328047),
   (1994328048),(1994328049),(1994328050),(1994328051),
   (1994328052),(1994328053),(1994328054),(1994328055)

    RETURN 
END
GO

然后在需要 ID 的地方使用此功能,例如

SELECT *
FROM Customers AS c
INNER JOIN (SELECT * FROM tvf_GetIDs()) t ON c.CustID = t.data

您只需在 ID 更改时更新 TVF。