일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 싱글톤
- Effective Java
- DI
- java
- 필드 주입
- 스프링 프레임워크
- 생성자 주입
- kafka
- Javascript
- SQL
- assertThrows
- spring
- sqld
- resultMap
- 스프링 빈
- jdbc
- assertThat
- mybatis
- 스프링
- @Configuration
- springboot
- 스프링 부트
- 스프링 부트 입문
- 스프링 부트 기본
- 스프링부트
- thymeleaf
- db
- DIP
- JPA
- 스프링 컨테이너
- Today
- Total
선 조치 후 분석
[ORACLE] PL/SQL그리고 CURSOR 본문
Cursor를 알기 전에 먼저 PL/SQL에 대한 개념을 알고 가는 게 좋을 것 같다.
PL/SQL
PL/SQL은 데이터베이스 애플리케이션을 개발하기 위한 프로그래밍 언어, 즉 SQL을 확장한 절차적 언어이고,
프로시저는 PL/SQL에서 사용되는 코드 블록 중 하나로, 데이터베이스 작업을 수행하기 위해 사용된다.
프로시저는 PL/SQL에서 구현된 코드의 일부분을 재사용하고자 할 때 사용되며, 호출되어 실행될 수 있다.
종류
Procedure : 리턴값을 하나 이상 가질 수 있는 프로그램
Function : 하나 이상의 프로시저, 함수, 변수, 예외 등의 묶음
Trigger : 지정된 이벤트가 발생하면 자동으로 실행되는 PL/SQL 블록
PL/SQL은 원래 단일행에 대한 처리만 가능하지만, CURSOR를 이용하면 다수의 행을 처리할 수 있다.
그래서 마이바티스를 사용하지 않을 때 루프를 돌려 레코드셋을 얻을 때 Cursor를 사용할 수 있는 것이다.
JDBCtype = CURSO
SI를 하면서 Mapper에서 이와 같은 속성을 봤다.
JDBCType의 CURSOR는 데이터베이스에서 결과 집합을 가리키는 데이터 타입을 나타내며,
JDBC를 사용하여 데이터베이스로부터 커서 기반의 결과를 가져올 때 사용된다.
Cursor
쿼리문에 의해서 반환되는 결괏값을 저장하는 메모리공간을 가리키는 포인터
일반 Cursor
명시적(Explicit) 커서 : 사용자가 선언해서 생성 후 사용하는 SQL 커서
묵시적(Implicit) 커서 : 오라클에서 자동으로 선언해 주는 SQL 커서
명시적/묵시적 커서는 정적이므로, 커서가 만들어지는 시점에 쿼리문이 정의됩니다.
따라서 런타임까지는 커서에 이용할 쿼리를 정의할 수 없기 때문에, 오라클에서는 REF CURSOR와 커서변수를 제공하여
런타임시에 커서의 쿼리를 정의하고 결과 셋을 처리할 수 있도록 하고 있습니다.
동적 Cursor - REF CURSOR
1. 강한 타입(제한적 REF CURSOR) : 쿼리의 결과 셋을 구성할 리턴 타입 선언을 필요
TYPE T_CURSOR IS REF CURSOR;
2. 약한 타입(비 제한적 REF CURSOR) : 리턴타입 정의를 포함하지 않고, 어떤 결과 셋을 얻는 경우에도 이용 가능
TYPE T_CURSOR IS REF CURSOR;
RETURN A;
참고 블로그 : https://blog.naver.com/minis24
'Solution > DB' 카테고리의 다른 글
DB GRANT, REVOKE 권한 개념 [Specified schema object was not found. ] (0) | 2023.08.28 |
---|---|
CHAR vs VARCHAR 차이점은? (0) | 2023.08.25 |
[ORACLE, TIBERO] DB에 저장된 프로시저, 함수 검색 방법 (0) | 2023.06.22 |
[DB] Index 개념 정리 (0) | 2023.02.20 |
[ORACLE] 딕셔너리 뷰 USER_TAB_MODIFICATIONS (0) | 2022.11.16 |