我做了一个选择,它会带回一个ID列表。然后,我想为计算结果的每个ID调用另一个过程,因此我最终得到了一个结果列表。
我该怎么做?我需要某种循环,但我不擅长SQL。
编辑:Microsoft SQL 2008,纯粹在SQL中
答案 0 :(得分:2)
编写一个用户定义的函数,该函数接收ID并返回计算结果,然后您可以使用如下查询获取每个ID的结果:
SELECT id, DatabaseYouUsed.dbo.functionYouWrote(id)
FROM DatabaseYouUsed.dbo.TableWithIDs
答案 1 :(得分:1)
您可以拥有一个调用select来获取ID的存储过程,在结果列表中使用游标并为每个ID调用另一个过程。全部存储过程。
答案 2 :(得分:1)
如果一行生成一个结果:
CREATE FUNCTION f(x int) RETURNS int AS BEGIN
RETURN x * 2
END
GO
SELECT id, x, dbo.f(x) FROM my_table
如果一行可能会生成多个结果:
CREATE FUNCTION f(x int) RETURNS @r TABLE(result int) AS BEGIN
INSERT INTO @r VALUES(x)
INSERT INTO @r VALUES(x * 2)
RETURN
END
GO
SELECT t.id, t.x, r.result FROM my_table t CROSS APPLY dbo.f(t.x) r