홈 · 개발 참고자료

개발 참고자료

[MS-SQL] 프로시져에서 특정문자로 분리하여 여러건 입력하기

작성자
관리자
작성일
2017-04-15
조회
6601
분류
기타 DBMS
CREATE PROCEDURE [dbo].[_T_ARR_SAVE]
@an_idx bigint, @as_kind nvarchar(20), @as_codeS nvarchar(512), @as_nameS nvarchar(512)
WITH EXEC AS CALLER
AS
/*───────────────────────────────────────
모두 삭제후 다시 저장
───────────────────────────────────────*/
DECLARE @ls_Code nVarchar(20)
DECLARE @ls_Name nVarchar(20)




DELETE FROM mnpbanana.a_Jboard_read_targer
WHERE jb_idx = @an_idx


WHILE CHARINDEX(',',@as_codeS) <> 0 -- CHARINDEX(A, B) 는 B.Split('A') 랑 같다고 보면 될듯
BEGIN
/* , 로 나눈 첫번째 인자를 INSERT 시킨다. */
SET @ls_Code = rtrim(ltrim(SUBSTRING(@as_codeS, 1, CHARINDEX(',', @as_codeS) -1 )))
SET @ls_Name = rtrim(ltrim(SUBSTRING(@as_nameS, 1, CHARINDEX(',', @as_nameS) -1 )))

INSERT INTO a_board_read_targer
( jb_idx, jb_kind, jb_code, jb_name )
VALUES ( @an_idx, @as_kind, @ls_Code, @ls_Name)

/* 업데이트 된 맨 앞 한자리를 빼고 다시 SET 해주면서 루프를 돈다. */
SET @as_codeS = SUBSTRING(@as_codeS, CHARINDEX(',', @as_codeS) +1, LEN(@as_codeS))
SET @as_nameS = SUBSTRING(@as_nameS, CHARINDEX(',', @as_nameS) +1, LEN(@as_nameS))
END

COMMIT
GO