2009-10-13 17 views
1

select를 수행하면 ID 목록이 반환됩니다. 그런 다음 결과를 계산하는 각 ID에 대해 다른 프로 시저를 호출하여 결국 결과 목록을 작성하려고합니다.결과를 통한 루프 반복

어떻게하면됩니까? 나는 어떤 종류의 루프가 필요하지만 나는 SQL에 능숙하지 않다.

편집 : 마이크로 소프트 SQL 2008, 그리고 순수 SQL

+0

? 프런트 엔드 응용 프로그램은 무엇으로 작성 되었습니까? MySQL, PHP 또는 다른 사람? –

+0

당신은 이것을 어떤 언어로하려고합니까? – kscott

+0

우리는 어떤 테이블과 컬럼, 구체적으로 당신이 계산하기를 원하는지 더 많은 도움을 필요로합니다. –

답변

2

당신은 다음과 같은 쿼리를 각 ID에 대해 그 결과를 얻을 수있는 ID에 취해 계산 결과를 반환하는 사용자 정의 함수 작성 : 하나의 행은 하나 개의 결과를 생성

SELECT id, DatabaseYouUsed.dbo.functionYouWrote(id) 
FROM DatabaseYouUsed.dbo.TableWithIDs 
+1

이것은 저장 프로 시저가 아닌 UDF에서만 작동한다고 생각했습니다. 그것은 SQL2008 R2 – MartW

+0

아 맞아 맞지 않는 것 같습니다. 편집 됨. – kscott

+0

루핑과 거의 같습니다. 행 단위로 행동하기 때문에 스칼라 udfs를 사용하지 마십시오. – HLGEM

1

에 당신은 ID를 얻을 결과 목록에 커서를 사용하여 각 ID에 대한 다른 프로 시저를 호출하는 선택을 호출하는 저장 프로 시저를 가질 수 있습니다. 모두 저장 프로 시저 내부에 있습니다.

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 
당신이 사용하고있는 DBMS