쓰던글이 다 날라가서 이렇게 하게된 계기는 다 생략..ㅠㅠ
* 사용자 요구사항
위 요구사항(그림)을 프로시저로 처리하는 과정
-- 프로시저 호출할때 사용할 변수 DECLARE @OPTIONS VARCHAR(MAX) SET @OPTIONS = 'O|id1|sub_title1|img_path1|cnt1|order1|O|id2|sub_title2|img_path2|cnt2|order2' |
-- 프로시저 내에서 사용할 변수 DECLARE @SPLIT_TXT CHAR(1) = '|' (= 구분자) DECLARE @POS INT DECLARE @OPTION_OR_DETAIL CHAR(1) DECLARE @OPTION_ID INT DECLARE @OPTION_NAME VARCHAR(500) DECLARE @OPTION_IMG_PATH VARCHAR(1000) DECLARE @OPTION_CNT INT DECLARE @OPTION_ORDER INT BEGIN SET @OPTIONS = LTRIM(RTRIM(@OPTIONS)) + @SPLIT_TXT = "@OPTIONS" 뒤에 구분자 추가 SET @POS = CHARINDEX(@SPLIT_TXT, @OPTIONS, N) = N번째 이후로 "@OPTIONS" 에서 "@SPLIT_TXT" 가 있는 위치 반환 = JAVA 의 indexOf() 와 같은 기능 IF REPLACE(@OPTIONS, @SPLIT_TXT, '') <> '' BEGIN /* LOOP */WHILE @POS > 0 BEGIN SET @OPTION_OR_DETAIL = LTRIM(RTRIM(LEFT(@OPTIONS, @POS - 1))) = O|id1|sub_title1|img_path1|cnt1|order1 = JAVA 의 substring() 과 같은 기능 SET @OPTIONS = RIGHT(@OPTIONS, LEN(@OPTIONS) - @POS) = 앞에서 사용한 문자열 이후로 다시 셋 SET @POS = CHARINDEX(@SPLIT_TXT, @OPTIONS, 1) = N번째 이후로 "@OPTIONS" 에서 "@SPLIT_TXT" 가 있는 위치 반환 = JAVA 의 indexOf() 와 같은 기능 .....반복..... SET @OPTION_ID = LTRIM(RTRIM(LEFT(@OPTIONS, @POS - 1))) = SET @OPTIONS = RIGHT(@OPTIONS, LEN(@OPTIONS) - @POS) SET @POS = CHARINDEX(@SPLIT_TXT, @OPTIONS, 1) SET @OPTION_NAME = LTRIM(RTRIM(LEFT(@OPTIONS, @POS - 1))) = SET @OPTIONS = RIGHT(@OPTIONS, LEN(@OPTIONS) - @POS) SET @POS = CHARINDEX(@SPLIT_TXT, @OPTIONS, 1) SET @OPTION_IMG_PATH = LTRIM(RTRIM(LEFT(@OPTIONS, @POS - 1))) = SET @OPTIONS = RIGHT(@OPTIONS, LEN(@OPTIONS) - @POS) SET @POS = CHARINDEX(@SPLIT_TXT, @OPTIONS, 1) SET @OPTION_CNT = LTRIM(RTRIM(LEFT(@OPTIONS, @POS - 1))) = SET @OPTIONS = RIGHT(@OPTIONS, LEN(@OPTIONS) - @POS) SET @POS = CHARINDEX(@SPLIT_TXT, @OPTIONS, 1) SET @OPTION_ORDER = LTRIM(RTRIM(LEFT(@OPTIONS, @POS - 1))) = IF( @OPTION_ID = 0 ) BEGIN --INSERT 구문 SET @OPTION_ID = SCOPE_IDENTITY() = Insert 실행 후 Key 값 리턴 END ELSE BEGIN --업데이트 구문 END SET @OPTIONS = RIGHT(@OPTIONS, LEN(@OPTIONS) - @POS) SET @POS = CHARINDEX(@SPLIT_TXT, @OPTIONS, 1) END -- IN OF WHILE END -- OUT OF WHILE [COMMIT] |
'Develope > DB' 카테고리의 다른 글
MSSQL 프로시저 생성 및 실행 - DELETE (0) | 2019.01.29 |
---|---|
MSSQL 프로시저 생성 및 실행 - INSERT (0) | 2019.01.29 |
MSSQL 테이블 생성 (0) | 2019.01.29 |