FlexSQL

FlexSQL은 플렉스튜디오에서 제공하는 SQL 서비스 관리 기능으로 데이터베이스와 상호작용이 가능한 SQL(MySQL 및 MSSQL) 구문을 생성하고 실행할 수 있도록 도와줍니다.

FlexSQL은 Business 플랜 이상에서 사용하실 수 있습니다.

[도입문의]

FlexSQL 콘솔 화면

영역 번호영역 이름영역 설명
1

버전 관리

유지보수의 용이성을 위해 버전 관리 기능을 제공합니다. 버전 관리 설명

2

SQL 명 검색

등록된 SQL 서비스 명을 검색합니다.

3

DBMS 유형 설정

스크립트가 실행될 DBMS 유형을 지정합니다. DBMS 유형 설정 설명

4

스크립트 작성 영역

DB에서 데이터를 읽고 쓰기 위한 SQL 스크립트 구문을 작성합니다. EJS 문법을 사용하여 받아온 데이터를 스크립트 내에서 사용할 수 있습니다. FlexSQL Script 작성법

5

SQL 서비스 목록

워크스페이스에 등록된 SQL 서비스들을 확인할 수 있는 영역입니다.

6

새 SQL 서비스 등록

신규 SQL 서비스를 생성할 수 있습니다. 새 SQL 서비스를 생성한 후 시나리오에서 사용하기 위해서는 반드시 새 버전 발행을 해야합니다.

버전 관리 설명

우측 더보기 버튼을 통해 스크립트 버전 관리를 할 수 있습니다. 스크립트를 수정하면 작업중인 상태로 변경 되며, 버전 관리 기능이 활성화됩니다.

항목명설명

새 버전 발행

새로운 버전으로 스크립트를 발행합니다. 초기 버전 생성 따라하기

현재버전으로 변경내역 반영

현재 버전으로 스크립트를 발행합니다. 이미 버전이 발행된 SQL 서비스를 수정한 경우만 해당 항목이 활성화됩니다. 현재버전으로 변경내역 반영 따라하기

작업내용 취소

작업 중인 내용을 취소하고 최신 버전의 스크립트를 유지합니다.

삭제

등록한 스크립트를 삭제합니다.

시나리오에서 FlexSQL 서비스를 사용하기 위해서는 반드시 새 버전 발행 혹은 현재버전으로 변경내역 반영을 해야합니다. 신규 생성 및 수정시 해당됩니다.

시나리오에서 FlexSQL 서비스를 사용한 경우, 새 버전 발행시 "SQL Script Version" 요소가 의도한 SQL 서비스 버전과 연결되어 있는지 확인해주세요. 0으로 설정하면 가장 최신 버전이 실행됩니다.

[시나리오 개발하기]-[개발모드]-[서비스]-[FlexSQL]-[SQL Script Version]

초기 버전 생성 따라하기

SQL 서비스를 생성하고 새 버전 발행하는 법을 알아봅시다. 아래 창에서 [시작하기]를 눌러주세요.

현재버전으로 변경내역 반영 따라하기

SQL 서비스를 수정하고 현재 버전에 반영하는 법을 알아봅시다. 아래 창에서 [시작하기]를 눌러주세요.

DBMS 유형 설정 설명

FlexSQL은 기본적으로 MySQL 기반의 FlexDB에서 실행되지만 MSSQL 기반의 외부DB에서도 사용이 가능합니다. MSSQL탭을 사용하는 경우 시나리오에서 FlexSQL 서비스 생성시 "외부 DB 연결" 설정이 필요합니다.

[시나리오 개발하기]-[개발모드]-[서비스]-[FlexSQL]-[외부 DB 연결]

FlexSQL 활용

FlexSQL Script를 작성에 필요한 내용들을 간단한 예제와 함께 설명입니다.

FlexSQL 표현식

<% %> 자바스크립트를 작성할 수 있도록 제공하는 표현식 입니다. 변수 선언, 조건문, 반복문 등을 작성하여 SQL문을 동적으로 생성할 수 있습니다.

<%= %> 변수를 반환하여 SQL문에 동적으로 값을 채워 넣을 수 있습니다.

FlexSQL 시스템 변수

paramBlocks는 이벤트에서 설정한 보내는 데이터를 꺼내올 수 있는 변수입니다. 이중배열로 구성되어 있습니다.

[시나리오 개발하기]-[개발 모드]-[이벤트]

 paramBlocks [Block, Block,...]
              Block [{Sector},{Sector},...]

기본 예제

사용자로부터 전달받은 데이터는 아래 예시와 동일하다고 가정합니다.

[
  [
    {
      "fBaseUserID": 1
    }
  ]
]

전달 받은 데이터를 이용하여 데이터를 조회하는 SQL 구문을 FlexSQL 스크립트로 작성합니다.

--전달 받은 데이터 중 첫번째 블럭을 block 변수로 지정합니다.
<%let block = paramBlocks[0];%>
--block의 첫번째 섹터에 fBaseUserID가 있는 경우 SELECT 구문을 실행합니다.
<%if(block[0] && block[0].fBaseUserID){%>
    --SQL 구문의 조건절에 fBaseUserID를 동적으로 지정합니다.
    SELECT * FROM TestTable WHERE UpdateUserID = <%=block[0].fBaseUserID%>;
<%}%>

위 FlexSQL 스크립트 실행시 최종적으로 아래와 같은 SQL 구문이 실행됩니다.

SELECT * FROM TestTable WHERE UpdateUserID = '1';

Test-SQL을 활용하면 직관적으로 구문을 이해하고 작성할 수 있습니다.

[디버거]-[서비스 테스트]-[Test-SQL]

심화 예제

사용자로부터 전달받은 데이터는 아래 예시와 동일하다고 가정합니다.

[
  [
    {
      "Title": "첫번째 제목 수정",
      "DataSeq": 1
    },
    {
      "Title": "두번째 제목 수정",
      "DataSeq": 2
    }
  ]
]

전달 받은 데이터를 이용하여 여러 데이터를 수정하는 SQL 구문을 FlexSQL 스크립트로 작성합니다.

--전달 받은 데이터 중 첫번째 블럭을 block 변수로 지정합니다.
<% let block = paramBlocks[0]; %>
--block 배열의 섹터들을 하나씩 SQL 구문으로 생성합니다.
<%for(let sector of block){%>
    --SQL 구문에 필요한 값을 동적으로 지정합니다.
    UPDATE TestTable
    SET Title = <%=sector.Title%>
    WHERE DataSeq = <%=sector.DataSeq%>;
<%}%>

위 FlexSQL 스크립트 실행시 최종적으로 아래와 같은 SQL 구문이 실행됩니다.

UPDATE TestTable
SET Title =  '첫번째 제목 수정' 
WHERE DataSeq =  '1' ;

UPDATE TestTable
SET Title =  '두번째 제목 수정' 
WHERE DataSeq =  '2' ;

Test-SQL을 활용하면 직관적으로 구문을 이해하고 작성할 수 있습니다.

[디버거]-[서비스 테스트]-[Test-SQL]

Last updated