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