FlexSQL 서비스로 데이터 통합처리하기
FlexSQL 서비스로 데이터 통합처리하기
이전 강의에서는 FlexSQL 서비스를 활용해 데이터를 삭제하는 방법을 살펴봤어요. 이번 강의에서는 저장, 수정, 삭제를 각각 나누어 처리하는 방식이 아니라, 여러 변경 사항을 하나의 FlexSQL 서비스로 통합 처리하는 방법을 소개합니다. 사용자가 화면에서 여러 데이터를 한 번에 추가, 수정, 삭제한 뒤 ‘반영’ 버튼 한 번으로 모든 변경 사항을 처리하는 구조를 만들어 볼게요.
1단계 : 통합처리를 위한 반영 이벤트 연결하기
데이터를 일괄 처리하는 방법은 다양하지만, 이번 강의에서는 보내는 데이터를 필터 상태별로 여러 개 전달해서 처리하는 방식을 사용할 예정이에요.
-
스튜디오에서 Dev 모드로 이동
flexsql/6-7/6-7%20FlexSQL_%ED%86%B5%ED%95%A9%EC%B2%98%EB%A6%AC.00_00_31_03.%EC%8A%A4%ED%8B%B8%20002.jpg?width=960&height=540&name=6-7%20FlexSQL_%ED%86%B5%ED%95%A9%EC%B2%98%EB%A6%AC.00_00_31_03.%EC%8A%A4%ED%8B%B8%20002.jpg)
2. 반영 버튼에 클릭 이벤트 사용 (이벤트명 : 반영)
flexsql/6-7/6-7%20FlexSQL_%ED%86%B5%ED%95%A9%EC%B2%98%EB%A6%AC.00_00_41_13.%EC%8A%A4%ED%8B%B8%20003.jpg?width=960&height=540&name=6-7%20FlexSQL_%ED%86%B5%ED%95%A9%EC%B2%98%EB%A6%AC.00_00_41_13.%EC%8A%A4%ED%8B%B8%20003.jpg)
3. 연결 아이콘 클릭
flexsql/6-7/6-7%20FlexSQL_%ED%86%B5%ED%95%A9%EC%B2%98%EB%A6%AC.00_00_45_01.%EC%8A%A4%ED%8B%B8%20004.jpg?width=960&height=540&name=6-7%20FlexSQL_%ED%86%B5%ED%95%A9%EC%B2%98%EB%A6%AC.00_00_45_01.%EC%8A%A4%ED%8B%B8%20004.jpg)
4. 서비스 추가
flexsql/6-7/6-7%20FlexSQL_%ED%86%B5%ED%95%A9%EC%B2%98%EB%A6%AC.00_00_45_16.%EC%8A%A4%ED%8B%B8%20005.jpg?width=960&height=540&name=6-7%20FlexSQL_%ED%86%B5%ED%95%A9%EC%B2%98%EB%A6%AC.00_00_45_16.%EC%8A%A4%ED%8B%B8%20005.jpg)
5. 서비스 종류를 FlexSQL로 선택
flexsql/6-7/6-7%20FlexSQL_%ED%86%B5%ED%95%A9%EC%B2%98%EB%A6%AC.00_00_49_26.%EC%8A%A4%ED%8B%B8%20006.jpg?width=960&height=540&name=6-7%20FlexSQL_%ED%86%B5%ED%95%A9%EC%B2%98%EB%A6%AC.00_00_49_26.%EC%8A%A4%ED%8B%B8%20006.jpg)
2단계 : 보내는 데이터 & 받는 데이터 설정하기
1. 보내는 데이터 필터 상태 설정
-
-
첫 번째 ParamBlock (카테고리명 : wish / 필터 : Added)
-
두 번째 ParamBlock 추가 ( 카테고리명 : wish / 필터 : Updated)
-
세 번째 ParamBlock 추가 ( 카테고리명 : wish / 필터 : Deleted)
-
flexsql/6-7/6-7%20FlexSQL_%ED%86%B5%ED%95%A9%EC%B2%98%EB%A6%AC.00_01_30_17.%EC%8A%A4%ED%8B%B8%20007.jpg?width=960&height=540&name=6-7%20FlexSQL_%ED%86%B5%ED%95%A9%EC%B2%98%EB%A6%AC.00_01_30_17.%EC%8A%A4%ED%8B%B8%20007.jpg)
2. 받는 데이터 - 카테고리 작성 후 덮어쓰기 설정 (카테고리명 : wish)
flexsql/6-7/6-7%20FlexSQL_%ED%86%B5%ED%95%A9%EC%B2%98%EB%A6%AC.00_01_40_14.%EC%8A%A4%ED%8B%B8%20008.jpg?width=960&height=540&name=6-7%20FlexSQL_%ED%86%B5%ED%95%A9%EC%B2%98%EB%A6%AC.00_01_40_14.%EC%8A%A4%ED%8B%B8%20008.jpg)
3단계 : FlexSQL 스크립트 생성하기
-
FlexSQL 스크립트를 생성하기 위해 워크스페이스 - 좌측 데이터 메뉴 - FlexSQL 페이지로 이동
-
좌측 하단 새 SQL 서비스 클릭 후 스크립트 명 입력 (스크립트 명 : Reflect_WishProduct)
flexsql/6-7/6-7%20FlexSQL_%ED%86%B5%ED%95%A9%EC%B2%98%EB%A6%AC.00_01_49_15.%EC%8A%A4%ED%8B%B8%20009.jpg?width=960&height=540&name=6-7%20FlexSQL_%ED%86%B5%ED%95%A9%EC%B2%98%EB%A6%AC.00_01_49_15.%EC%8A%A4%ED%8B%B8%20009.jpg)
3. 스크립트 입력
-
- 지금까지 강의에서 자동 완성한 Insert, Update, Delete 스크립트 구조를 응용해서 통합 스크립트를 작성할 수 있어요. 보내는 데이터의 첫 번째, 두 번째, 세 번째 ParamBllock에 접근하여 각각 다른 변수에 할당합니다. 각 ParamBlock별로 데이터가 존재하는지 확인하고 반복문을 통해 구문을 만들도록 구성하였습니다. 마지막으로 변경된 품목 정보를 포함하여 모두 조회하도록 구성합니다.
-
- 예시 코드
<% let addedBlock = paramBlocks[0]; %>
<% let updatedBlock = paramBlocks[1]; %>
<% let deletedBlock = paramBlocks[2]; %>
-- Added
<%if(addedBlock.length > 0){%>
<% for (let sector of addedBlock) { %>
INSERT INTO `WishProduct` (`name`, `price`, `rate`, `remark`)
VALUES (<%=sector.name%>, <%=sector.price%>, <%=sector.rate%>, <%=sector.remark%>);
<% } %>
<%}%>
-- Updated
<%if(updatedBlock.length > 0){%>
<% for (let sector of updatedBlock) { %>
UPDATE `WishProduct`
SET `name` = <%=sector.name%>, `price` = <%=sector.price%>
`rate` = <%=sector.rate%>, `remark` = <%=sector.remark%>
WHERE `seq` = <%=sector.seq%>;
<% } %>
<%}%>
-- Deleted
<%if(deletedBlock.length > 0){%>
<% for (let sector of deletedBlock) { %>
DELETE FROM `WishProduct`
WHERE `seq` = <%=sector.seq%>;
<% } %>
<%}%>
-- Select for Reload
SELECT * FROM WishProduct
4. FlexSQL 상단 더보기 버튼 클릭
flexsql/6-7/6-7%20FlexSQL_%ED%86%B5%ED%95%A9%EC%B2%98%EB%A6%AC.00_02_41_10.%EC%8A%A4%ED%8B%B8%20011.jpg?width=960&height=540&name=6-7%20FlexSQL_%ED%86%B5%ED%95%A9%EC%B2%98%EB%A6%AC.00_02_41_10.%EC%8A%A4%ED%8B%B8%20011.jpg)
5. 새 버전 발행 버튼 선택 - 버전 1로 발행 완료
flexsql/6-7/6-7%20FlexSQL_%ED%86%B5%ED%95%A9%EC%B2%98%EB%A6%AC.00_02_43_14.%EC%8A%A4%ED%8B%B8%20012.jpg?width=960&height=540&name=6-7%20FlexSQL_%ED%86%B5%ED%95%A9%EC%B2%98%EB%A6%AC.00_02_43_14.%EC%8A%A4%ED%8B%B8%20012.jpg)
4단계 : 시나리오에 FlexSQL 반영 스크립트 연결하기
다시 스튜디오로 돌아와 반영 스크립트를 시나리오에 연결합니다.
-
서비스 - 시스템 정보 - SQL Script Name : Reflect_WishProduct / SQL Script Version : 1
flexsql/6-7/6-7%20FlexSQL_%ED%86%B5%ED%95%A9%EC%B2%98%EB%A6%AC.00_02_58_15.%EC%8A%A4%ED%8B%B8%20013.jpg?width=960&height=540&name=6-7%20FlexSQL_%ED%86%B5%ED%95%A9%EC%B2%98%EB%A6%AC.00_02_58_15.%EC%8A%A4%ED%8B%B8%20013.jpg)
2. 시트 컨트롤의 f_ID 값 복사 (예시 : f_94)
flexsql/6-7/6-7%20FlexSQL_%ED%86%B5%ED%95%A9%EC%B2%98%EB%A6%AC.00_03_25_28.%EC%8A%A4%ED%8B%B8%20014.jpg?width=960&height=540&name=6-7%20FlexSQL_%ED%86%B5%ED%95%A9%EC%B2%98%EB%A6%AC.00_03_25_28.%EC%8A%A4%ED%8B%B8%20014.jpg)
3. Dev 모드 - Event 탭 - 스크립트 아이콘 클릭
flexsql/6-7/6-7%20FlexSQL_%ED%86%B5%ED%95%A9%EC%B2%98%EB%A6%AC.00_03_29_07.%EC%8A%A4%ED%8B%B8%20015.jpg?width=960&height=540&name=6-7%20FlexSQL_%ED%86%B5%ED%95%A9%EC%B2%98%EB%A6%AC.00_03_29_07.%EC%8A%A4%ED%8B%B8%20015.jpg)
4. 데이터를 reload하는 스크립트 작성
-
- 플렉스튜디오 스크립트 명세서에서 시트 컨트롤 관련 스크립트 확인 가능
- 예시 : f.SheetControl(’f_94’).reloadData()
flexsql/6-7/6-7%20FlexSQL_%ED%86%B5%ED%95%A9%EC%B2%98%EB%A6%AC.00_03_32_05.%EC%8A%A4%ED%8B%B8%20016.jpg?width=960&height=540&name=6-7%20FlexSQL_%ED%86%B5%ED%95%A9%EC%B2%98%EB%A6%AC.00_03_32_05.%EC%8A%A4%ED%8B%B8%20016.jpg)
5단계 : 디버거로 통합 처리 결과 확인하기
-
시나리오 우측 상단의 화살표 (▶) 클릭하여 디버거 실행
flexsql/6-7/6-7%20FlexSQL_%ED%86%B5%ED%95%A9%EC%B2%98%EB%A6%AC.00_03_40_29.%EC%8A%A4%ED%8B%B8%20017.jpg?width=960&height=540&name=6-7%20FlexSQL_%ED%86%B5%ED%95%A9%EC%B2%98%EB%A6%AC.00_03_40_29.%EC%8A%A4%ED%8B%B8%20017.jpg)
2. 품목 정보 저장, 수정, 삭제 등 다양한 변경 작업 후 반영 버튼 클릭
3. 우측 로그에서 여러 ParamBlock이 전달되는지, ParamBlock별로 SQL 구문이 정상 생성되는지 확인
flexsql/6-7/6-7%20FlexSQL_%ED%86%B5%ED%95%A9%EC%B2%98%EB%A6%AC.00_04_16_24.%EC%8A%A4%ED%8B%B8%20018.jpg?width=960&height=540&name=6-7%20FlexSQL_%ED%86%B5%ED%95%A9%EC%B2%98%EB%A6%AC.00_04_16_24.%EC%8A%A4%ED%8B%B8%20018.jpg)
4. 새로 고침 후에도 모든 변경 내용이 유지되는지 확인
flexsql/6-7/6-7%20FlexSQL_%ED%86%B5%ED%95%A9%EC%B2%98%EB%A6%AC.00_04_25_01.%EC%8A%A4%ED%8B%B8%20019.jpg?width=960&height=540&name=6-7%20FlexSQL_%ED%86%B5%ED%95%A9%EC%B2%98%EB%A6%AC.00_04_25_01.%EC%8A%A4%ED%8B%B8%20019.jpg)
다음 강의 : FlexSQL 활용 시 알아두면 좋은 팁
이번 글에서는 FlexSQL 서비스를 활용해 저장·수정·삭제를 통합 처리하는 방법을 살펴봤어요. 다음 강의에서는 FlexSQL을 사용할 때 알아두면 팁과 유용한 정보들을 소개할 예정입니다. FlexSQL을 더 효율적으로 활용하고 싶다면 마지막 강의까지 함께해 주세요!
{{ include_custom_fonts({"Pretendard_Regular":["Regular"],"Pretendard_SemiBold":["Semi Bold"]}) }}
flexsql/6-7/6-7%20FlexSQL_%ED%86%B5%ED%95%A9%EC%B2%98%EB%A6%AC.00_02_07_00.%EC%8A%A4%ED%8B%B8%20010.jpg?width=960&height=540&name=6-7%20FlexSQL_%ED%86%B5%ED%95%A9%EC%B2%98%EB%A6%AC.00_02_07_00.%EC%8A%A4%ED%8B%B8%20010.jpg)