[DB] 복잡한 쿼리 처리를 위한 MySQL Procedure 이야기
데이터베이스 서버에서 데이를 가져올 때 엑셀에서는 한번에 한번의 쿼리(Query)만 처리할 수 있습니다.
처리 과정은 아래와 같습니다. ODBC를 통해 연결 설정을 해 놓으면 쉽습니다.
1. 서버에 연결
2. 서버에 Query 전송
3. 결과 받고 서버와의 연결 종료
VBA로 DB를 처리 할 때 한번의 쿼리를 해결할 때는 아무런 문제가 없습니다.
제 고민의 시작은 인터넷 환경이 열악한 곳에서
어떤 결과 값을 받아 내기 위해서, 여러번 쿼리를 보내서 결과를 받아 쿼리를 다시 생성해서 보내고,
받고 보내고를 반복하다 보니 최종 결과물을 받아내는데 시간이 많이 걸리는 것이었습니다.
가령, 관계형 데이터 베이스,
ID로 특정 필드의 값을 조회하고, 그 필드의 값으로 어떠한 결과를 찾아서,
출력 데이터를 가공해서 최종 결과물을 얻어 내는 것이었습니다.
또는, 새로은 레코드를 삽입해서 생성된 ID값을 반환 받아, 그 레코드를 로그 기록 테이블에 추가한다던가,
특정 값을 가진 여러개의 테이블에 동시에 업데이트 한다던가 할 때,
여러 번의 쿼리를 날려서 처리하는 것은 매우 비 효율적입니다.
이럴 때 매우 유용한 기능이 MySQL에 있는 Stored Procedure, Stored Function입니다.
이 안에 여러개의 처리 과정을 구현하고, 최종 결과 값을 받게 하면,
한번이 쿼리로 해결이 됩니다.
이러한 기능이 미이 있는 걸로 봐서는
이전의 수많은 프로그래머들이 저와 같은 고민을 이미 했었다는 의미겠지요.
아래는 제가 사용하는 간단한 프로시저 예입니다.
저와 같은 고민이 있으신 분들은 Stored Procedure 공부를 한번 해보셔요.
복잡한 쿼리 처리해는데는 정말 유용합니다.
번호 | 제목 | 작성자 | 작성일 | 추천 | 조회 |
[📚진짜쓰는 실무엑셀] 2024년 엑셀 공부, 이 책 한권으로 마스터하세요! (290)
오빠두엑셀
|
2022.02.03
|
추천 554
|
조회 844376
|
오빠두엑셀 | 2022.02.03 | 554 | 844376 | |
74491 |
New 이름관리 엑셀 업그레이드 버전 입니다.
(2)
박정호
|
2024.10.28
|
추천 0
|
조회 45
|
박정호 | 2024.10.28 | - | 45 |
74354 |
월드컵 랭킹 계산(ELO 점수 계산)
(4)
박정호
|
2024.10.22
|
추천 0
|
조회 54
|
박정호 | 2024.10.22 | - | 54 |
74269 |
엑셀2021이하에서 CHOOSECOLS, CHOOSEROWS 처럼 동작시키기
(13)
마법의손
|
2024.10.18
|
추천 2
|
조회 107
|
마법의손 | 2024.10.18 | 2 | 107 |
74204 |
이름관리 엑셀입니다.(모듈)
(6)
박정호
|
2024.10.15
|
추천 0
|
조회 136
|
박정호 | 2024.10.15 | - | 136 |
74028 |
로또번호2(반자동 기능 업데이트)
(4)
박정호
|
2024.10.05
|
추천 1
|
조회 130
|
박정호 | 2024.10.05 | 1 | 130 |
74012 |
매장 근태관리시트 공유
(3)
체리로그
|
2024.10.03
|
추천 1
|
조회 125
|
체리로그 | 2024.10.03 | 1 | 125 |
73964 |
[파워쿼리] 여러열 열분할하기
(4)
마법의손
|
2024.10.01
|
추천 1
|
조회 103
|
마법의손 | 2024.10.01 | 1 | 103 |
73915 |
M365 GroupBy, PivotBy 함수 공식 배포
(6)
원조백수
|
2024.09.27
|
추천 2
|
조회 139
|
원조백수 | 2024.09.27 | 2 | 139 |
73485 |
m365 신규함수(베타) : TRIMRANGE
(7)
더블유에이
|
2024.09.04
|
추천 1
|
조회 209
|
더블유에이 | 2024.09.04 | 1 | 209 |
73454 |
고등학교 선택과목 편성 방법
(4)
toug****
|
2024.09.03
|
추천 0
|
조회 122
|
toug**** | 2024.09.03 | - | 122 |
73241 |
로또 번호 엑셀입니다.
(9)
박정호
|
2024.08.24
|
추천 1
|
조회 278
|
박정호 | 2024.08.24 | 1 | 278 |
73096 |
그룹별 데이터 나누기 [가로정렬]
(7)
마법의손
|
2024.08.20
|
추천 2
|
조회 200
|
마법의손 | 2024.08.20 | 2 | 200 |
73093 |
ppt에 둥근 표 삽입하기
(4)
강민준🤗
|
2024.08.20
|
추천 1
|
조회 175
|
강민준🤗 | 2024.08.20 | 1 | 175 |
73029 |
XLOOKUP, XMATCH 함수에 새로운 Match_mode로 RegEx 추가
(2)
원조백수
|
2024.08.16
|
추천 3
|
조회 208
|
원조백수 | 2024.08.16 | 3 | 208 |
72413 |
아웃룩에 개빡쳐서 만든 ThunderBird로 수신자 별 대량 메일 발송 VBA 매크로 공유합니다.(업무자동화)
(4)
알파고
|
2024.07.22
|
추천 1
|
조회 495
|
알파고 | 2024.07.22 | 1 | 495 |
72045 |
조합짜주는 엑셀(20명까지) 출력은 1만항까지
(13)
박정호
|
2024.07.10
|
추천 1
|
조회 367
|
박정호 | 2024.07.10 | 1 | 367 |
71965 |
서양달력 업데이트 입니다.
(14)
박정호
|
2024.07.07
|
추천 0
|
조회 223
|
박정호 | 2024.07.07 | - | 223 |
71902 |
Excel에서 ImportRange, ImportHTML 함수 사용하기
(4)
원조백수
|
2024.07.05
|
추천 0
|
조회 167
|
원조백수 | 2024.07.05 | - | 167 |
71838 |
Microsoft 365 신규 번역 함수
(8)
원조백수
|
2024.07.02
|
추천 2
|
조회 385
|
원조백수 | 2024.07.02 | 2 | 385 |
71804 |
음력->양력->서양달력 변환
(2)
박정호
|
2024.07.01
|
추천 0
|
조회 231
|
박정호 | 2024.07.01 | - | 231 |
@dra**** 님 MySQL 자체에서도 함수를 구현할 수 있다는걸 처음 알았습니다
@더블유에이 님 mysql 안에 저장해 놓고 불러 쓰는 함수인데, 매우 유용합니다. 과거의 고민 들 싹 사라 졌습니다.
@dra**** 님 DB연결 시, connectionString에 OPTION=67108864를 추가하면 쿼리문 여러 개 활용이 가능합니다.
https://stackoverflow.com/questions/4144961/multiple-insert-statements-in-single-odbc-executenonquery-c
https://dev.mysql.com/doc/connector-odbc/en/connector-odbc-configuration-connection-parameters.html
@lunashiel 님 뭐리 결과값을 받아 다시 쿼리로 처리하는데는 프로시져를 쓸 수 밖에 없지만,
지금 올려주신 커넥션스트링은 단순 여러개의 쿼리를 처리할 때 매우 유용할 듯 합니다.
이거를 그리도 찾았다가 여러번 실패 했는데, 다음번 프로젝트 코딩때 유용하게 사용하겠습니다.
감사합니다. ^^