Цикл SQL через результаты - PullRequest
       3

Цикл SQL через результаты

1 голос
/ 13 октября 2009

Я делаю выбор, и он возвращает список идентификаторов. Затем я хочу вызвать другую процедуру для каждого идентификатора, который вычисляет результат, поэтому я получаю список результатов.

Как я могу это сделать? Мне нужен какой-то цикл, но я не очень хорош в SQL.

Редактировать: Microsoft SQL 2008 и только в SQL

Ответы [ 3 ]

2 голосов
/ 13 октября 2009

Напишите пользовательскую функцию, которая принимает идентификатор и возвращает вычисленный результат, который затем можно получить для каждого идентификатора с помощью запроса, подобного следующему:

SELECT id, DatabaseYouUsed.dbo.functionYouWrote(id)
FROM DatabaseYouUsed.dbo.TableWithIDs
1 голос
/ 13 октября 2009

Если одна строка генерирует один результат:

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
1 голос
/ 13 октября 2009

Вы можете иметь хранимую процедуру, которая вызывает метод select для получения идентификаторов, использовать курсор в списке результатов и вызывать другую процедуру для каждого идентификатора. Все внутри хранимой процедуры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...