5.1.9 GetFrontCandidate 저장 프로시저

CandidateTable의 맨 앞에 있는 요소 정보를 얻어오는 저장 프로시저를 만듭시다. 저장 프로시저 이름은 GetFrontCandidate로 결정할게요.

인자는 OUTPUT 유형으로 수집 후보 페이지 주소와 Seed 사이트에서의 상대적 깊이를 선언합니다. 그리고 수집 후보 대상이 없을 수도 있으니 이를 확인하는 인자도 선언합니다.

ALTER PROCEDURE dbo.GetFrontCandidate
    (
    @Url varchar(200) OUTPUT,
    @Depth int OUTPUT,
    @Getted int OUTPUT
    )

먼저 CandidateTable에 항목 개수를 얻어옵니다. 항목 개수를 얻어오기 위해 변수 선언이 필요하고 GetCountCandidate 저장 프로시저를 실행합니다.

Declare @ElemCount int
Exec GetCountCandidate @ElemCount OUTPUT

만약 항목 개수가 0이면 Getted 변수 값을 0으로 설정합니다.

if @ElemCount = 0 begin
    set @Getted = 0
end

항목 개수가 0이 아니면 일련 번호의 최소값을 얻어온 후에 해당 항목의 정보를 얻어옵니다. 그리고 해당 항목을 CandidateTable에서 제거합니다. 일련 번호를 기억할 변수 선언도 필요합니다.

Declare @SeqNo int
else begin
    Exec GetMinSeqNo @SeqNo OUTPUT
    Exec GetCandidateBySeqNo @SeqNo, @Url OUTPUT, @Depth OUTPUT
    Exec RemoveCandidate @SeqNo
    set @Getted = 1
end

▷ GetFrontCandidate 저장 프로시저

ALTER PROCEDURE dbo.GetFrontCandidate
    (
    @Url varchar(200) OUTPUT,
    @Depth int OUTPUT,
    @Getted int OUTPUT
    )
AS
    Declare @ElemCount int
    Declare @SeqNo int

    Exec GetCountCandidate @ElemCount OUTPUT
 
    if @ElemCount = 0 begin
        set @Getted = 0
    end
    else begin
        Exec GetMinSeqNo @SeqNo OUTPUT
        Exec GetCandidateBySeqNo @SeqNo, @Url OUTPUT, @Depth OUTPUT
        Exec RemoveCandidate @SeqNo
        set @Getted = 1
    end
RETURN