5.1.19 AddInvertedItem 저장 프로시저
이번에는 형태소와 웹 페이지 주소, 참조 카운터를 입력 인자로 받아 동적으로 생성한 형태소 테이블에 웹 페이지 주소와 참조 카운터를 추가하는 저장 프로시저를 구현해 봅시다. 저장 프로시저 이름은 AddInvertedItem으로 결정합시다.
입력 인자로 형태소 이름, 웹 페이지 주소, 참조 카운터를 받습니다.
CREATE 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 저장 프로시저
CREATE 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 |
'프로그래밍 기술 > 웹 검색 엔진 만들기' 카테고리의 다른 글
6. 웹 로봇 만들기 (0) | 2017.12.07 |
---|---|
5. 4 DBM ForSearch 구현 (0) | 2017.12.07 |
5. 3 DBM ForSearch에 필요한 저장 프로시저 구현 (0) | 2017.12.07 |
5.2.2 DBM ForAll 라이브러리 만들기 (0) | 2017.12.06 |
5. 2 DBM ForAll 구현 (0) | 2017.12.06 |
5.1.18 AddMorphemeInfo 저장 프로시저 (0) | 2017.12.06 |
5.1.17 CreateInvertedFile 저장 프로시저 (0) | 2017.12.06 |
5.1.16 GetMIndex 저장 프로시저 (0) | 2017.12.06 |
5.1.15 AddMorpheme 저장 프로시저 (0) | 2017.12.06 |
5.1.14 ExistedMorpheme 저장 프로시저 (0) | 2017.12.06 |