본문 바로가기

분류 전체보기14

MariaDB || SP 내에서 타 SP 호출 방법 [목차] 프로시저 내에서 다른 프로시저를 호출하는 방법은 간단하며, 단순히 CALL 프로시저명(파라미터); 하면 호출이 된다. [그림1] SP 내에서 다른 SP의 호출 여기서 중요한 점은 호출하는 상위 SP(호출자, caller)와 호출 당하는 하위 SP(피호출자, callee) 사이의 데이터 전달 및 에러 처리 방식에 대하여 어떻게 할 것인가 이다. 상위 SP는 외부 Application(예를들어 WAS)에게 데이터를 SELECT구문을 통한 Recordset[n] 형태로 전달해야 하는 경우, 해당 상위 SP를 Wrapping 하는 API용 SP를 만들어야 할 수도 있다. 왜냐하면 SP에서 SELECT 구문에 의한 Recordset[n] 형태의 반환 결과는 다른 SP에서 호출하여 사용할 방법이 없기 때문.. 2022. 11. 13.
MariaDB || 커서를 이용한 Loop의 사용 (명시적 커서의 사용) [목차] MariaDB에서 커서를 이용한 Loop의 사용시에 Oracle과는 다르게 아쉽지만 현재까지는 명시적 커서만 지원되는듯 하다. 커서를 이용한 Loop문은 아래 [그림1]과 같이 크게 (1)Loop용 변수 선언, (2)커서의 선언, (3)NOT FOUND 핸들러 선언, (4)Loop 구문으로 구성된다. Loop 구문은 “커서 OPEN” -> Loop body 내에서 “커서 FETCH” -> “커서 CLOSE”로 세부 구성된다. [그림1] LOOP 문의 구성 (1) Loop용 변수 선언 상황에 따라 다르긴 하지만 주로 다음과 같은 변수를 선언하여 사용한다. 커서로부터 fetch한 데이터가 더이상 존재하지 않아 not found 이벤트가 발생될 때, 이에대한 핸들링 처리를 위한 변수 (true/fal.. 2022. 11. 7.
MariaDB || Stored Procedure(SP) 및 Function(FN)의 기본 구조 [목차] MariaDB는 Oracle의 BEGIN~EXCEPTION~END와 MS-SQL의 TRY~CATCH Block 구조와는 다르게 예외 처리에 대한 부분이 상단부에 위치해 있으며 사용에 약간 불편함(?)이 따르는 구조로 되어 있다. 주요 구조는 과 같이 정의 영역과 프로그램 영역으로 크게 나눌수 있으며, 작성하는 사람마다 다르겠지만 개인적으로는 프로그래밍 영역을 세부적으로 구분한다면 프로그램의 설명을 위한 주석 영역과 일반변수 및 커서를 정의하는 변수 정의 영역, 예외 처리를 위한 예외 정의 영역, 로직 등을 구현하는 프로그래밍 영역 등으로 구분할 수 있다. 프로시저는 자제적으로 사용되기 보다는 외부 어플리케이션 등과 연계하여 활용되는 경우가 대부분이므로, 트랜젝션의 관리는 프로시저를 호출하는 외부.. 2022. 11. 3.
MariaDB || Stored Procedure의 활용 MariaDB와 관련하여 Stored Procedure (뭐 MariaDB에서는 Stored Routines이라고 한다.)를 사용하는 개발 현장에서 활용할 수 있는 내용들을 정리하고자 한다. 개략적인 목차는 다음과 같다. (목차 및 내용은 지속적으로 추가/수정 작업을 진행할 예정이다.) 1. Stored Procedure (SP) 및 Function (FN)의 기본구조 2. 커서를 이용한 Loop 사용 (명시적 cursor의 사용) 3. SP 내에서 타 SP 호출 방법 4. JSON Data의 사용 (SP, FN에서의 Table 데이터 형식의 I/O 활용) 5. SP, FN용 에러 테이블의 사용 (non-transaction-safe 테이블의 활용: MyISAM, ARIA storage engine) :.. 2022. 11. 1.