2011-08-11 8 views
0

여기 시나리오가 있습니다. 클라이언트 응용 프로그램 (Delphi에서 개발 됨)에서 버튼을 누르면 저장 프로 시저가 활성화됩니다. 저장 프로 시저는 먼저 두 개의 열, 즉 BankID와 BankCategoryID를 반환하는 select 문에 대한 커서를 선언합니다. 커서 안의 각 행을 레코드로 가져 와서 BankCategoryID를 확인하고 BankCategoryID에 따라 결과 집합을 반환해야합니다.MS SQL Server 2005의 저장 프로 시저

CASE WHEN fetched_record.BankCategoryID=1 THEN 
    SELECT STATEMENT1 WHEN fetched_record.BankCategoryID=2 THEN 
    SELECT STATEMENT2 and so on... 

위의 경우 중 검색된 결과 집합을 내 클라이언트 응용 프로그램에 반환합니다. 그게 가능 한가?

답변

2

아마 커서 내에서 IF을 제어문으로 사용하고 싶습니까?

WHILE @@FETCH_STATUS = 0 
BEGIN 
    IF @BankCategoryID=1 
    BEGIN 
     SELECT Baz From Bat; 
     DECLARE @Spam bit; 
     SELECT @Spam = 0; 
    END 

    IF @BankCategoryID=2 
    BEGIN 
     SELECT Foo FROM Bar;  
    END 
    FETCH NEXT FROM MyCursor INTO @BankID, @BankCategory 
END 

여기는 sample TSQL cursor입니다. 두 개의 열 값을 @BankID@BankCategoryID의 두 변수로로드 할 수 있습니다. 즉 FETCH NEXT FROM MyCursor INTO @BankID, @BankCategoryID

기타 : 커서없이이 모든 작업을 수행 할 수 있는지 궁금한가요? 두 경우 모두 위의 코드는 커서를 반복 할 때마다 더 많은 TSQL 문을 구현할 때 유용합니다.

+0

"fetched_record"입니다. 구문 MS SQL에 대해 true? 오라클을위한 것이지만 MS SQL을 정확히 알지 못하므로 방금 썼습니다. –

+0

@Mik : TSQL 커서를 만드는 데 도움이 필요합니까? 큰 문제로 질문을 업데이트하면 커서가 필요하지 않을 것입니다. 당신이 그것을 위해 게임하는 경우에, 세부 사항으로 당신의 질문을 새롭게하십시오. –

+0

그렇다면 커서가없는 결과 집합을 반복하는 방법은 무엇입니까? –