5.1.19 AddInvertedItem 저장 프로시저

이번에는 형태소와 웹 페이지 주소, 참조 카운터를 입력 인자로 받아 동적으로 생성한 형태소 테이블에 웹 페이지 주소와 참조 카운터를 추가하는 저장 프로시저를 구현해 봅시다. 저장 프로시저 이름은 AddInvertedItem으로 결정합시다.

입력 인자로 형태소 이름, 웹 페이지 주소, 참조 카운터를 받습니다.

ALTER PROCEDURE dbo.AddInvertedItem
    (
    @Morpheme varchar(50),
    @Url varchar(50),
    @Refcnt int
    )

먼저 GetMIndex 저장 프로시저를 이용하여 형태소 이름으로 역 파일 테이블에 있는 형태소 항목 번호를 얻어옵니다. 형태소 항목 번호를 얻어오기 위한 변수도 선언합니다.

declare @MIndex int
Exec GetMIndex @Morpheme, @MIndex OUTPUT

동적 테이블에 추가할 것이므로 쿼리를 동적으로 작성해야 합니다. 그리고 이번에는 쿼리문에 입력 인자로 받은 웹 페이지 주소와 참조 카운터도 추가해야 합니다. 따라서 쿼리문과 파라미터와 항목 번호를 캐스팅하여 테이블 이름의 뒷 부분을 만들 변수를 선언합니다.

declare @query nvarchar(200)
declare @param nvarchar(200)
declare @MIndex int
declare @TName varchar(50)

형태소 항목 번호로 테이블의 뒷 부분 문자열을 설정합니다.

set @TName = CAST(@MIndex as varchar(50) )

 insert 쿼리문을 설정합니다.
set @query = 'insert into MTB_'+@TName+
                   ' (Url,Refcnt) values(@p_url, @p_ref)'

파라미터를 설정합니다.

set @param = '@p_url varchar(50), @p_ref int'

입력 인자로 전달받은 값을 파라미터와 매핑하여 쿼리문을 실행합니다.

execute sp_executesql @query, @param, @p_url = @Url, @p_ref = @Refcnt

▷ AddInvertedItem 저장 프로시저

ALTER PROCEDURE dbo.AddInvertedItem
    (
    @Morpheme varchar(50),
    @Url varchar(50),
    @Refcnt int
    )
AS
    declare @query nvarchar(200)
    declare @param nvarchar(200)
    declare @MIndex int
    declare @TName varchar(50)

    Exec GetMIndex @Morpheme, @MIndex OUTPUT

    set @TName = CAST(@MIndex as varchar(50) )
    set @query = 'insert into MTB_'+@TName+
                       ' (Url,Refcnt) values(@p_url, @p_ref)'
    set @param = '@p_url varchar(50), @p_ref int'
 
    execute sp_executesql @query, @param, @p_url = @Url, @p_ref = @Refcnt
RETURN