inflearn logo
강의

Course

Instructor

Oracle PL/SQL Just This Much.. [Concept + Practice]

Collections 1. Concepts (Associative , Varrays , Nested Tables )

Oracle 11g에서의 association 활용

Resolved

161

Bruce Han

27 asked

1

Collections 1. 개념 (Associative , Varrays , Nested Tables )

강의의 17분쯤에 association으로 활용을 해주십니다.

 

근데 Oracle 11g에서는 패키지 헤더(Specification인데 편하게 헤더라고 할게요)에서 association을 값을 주며 초기화할 수 없습니다.

 

그래서 GPT에게 물어보며 얻어낸 결과물을 공유드립니다.

프로시저와 펑션을 활용했습니다.

 

패키지 헤더

create or replace PACKAGE PKG_COMMON AS 

  ...
  /* Associative array */
  type Capital is table of varchar2(50) -- Associative array type
                  index by varchar2(50); -- char type indexed by string
               -- index by pls_integer; -- only number type key
  PROCEDURE set_city_capital(cities Capital);
  FUNCTION get_city_capital RETURN Capital;
  
END PKG_COMMON;

패키지 바디

getter, setter 개념을 프로시저와 펑션에 접목했습니다.

create or replace PACKAGE BODY PKG_COMMON AS
    city_capital Capital;
    
    PROCEDURE set_city_capital(cities Capital) IS
    BEGIN
        city_capital := cities;
    END set_city_capital;
    
    FUNCTION get_city_capital RETURN Capital IS
    BEGIN
        RETURN city_capital;
    END get_city_capital;
END PKG_COMMON;

호출 블럭

DECLARE
  temp_city_capital PKG_COMMON.Capital;
  v_index varchar2(50); -- Scalar variable
BEGIN
  temp_city_capital('한국') := '서울';
  temp_city_capital('프랑스') := '파리';
  temp_city_capital('영국') := '런던';
  
  PKG_COMMON.set_city_capital(temp_city_capital);
  
  -- print associative array:
  v_index := temp_city_capital.first; -- get first element of array
  while v_index is not null loop
      dbms_output.put_line('population of ' || v_index || ' is ' || temp_city_capital(v_index));
      v_index := temp_city_capital.next(v_index); -- get next element of array
  end loop;
END;

이렇게 하면

/*
population of 영국 is 런던
population of 프랑스 is 파리
population of 한국 is 서울
*/

결과가 잘 나오는 것을 확인할 수 있습니다.

다만, 강사님의 의도와 다르지 않을까 싶기도 하네요. 어쨋든 11g에서도 활용할 수 있어 다행입니다 ㅎㅎ

oracle PL/SQL

Answer 1

1

itpaul

강의에 대해 부족한 부분을 설명해 주셔서 감사합니다.
11g 에서도 거의 다른 부분은 없을거라 생각했는데, 문제 되는 부분을 AI 툴까지 활용해서
해결하시다니 멋지시네요 ^^

노션 링크도 안 열리고, 알려준 vercel도 실행이 안됩니다.

0

10

1

실습소실행안되요

0

39

1

ORA-01017 오류 때문에 진도가 못나가고있습니다.!

0

38

2

제공된 홈페이지 로그인 ,출력값, 건의사항 오류

1

49

1

맥북용 자료 부탁드립니다.

0

37

2

로그인이 안되네요

0

33

1

22번문제 질문있습니다.

0

49

2

아키타입 환경설정중 오류

0

44

2

실전 모의고사 난이도

1

61

1

Intersect로 봄학기에 등록된 수업 검색 영상에서 궁금한 점이 있습니다.

0

46

2

오타가 있는거같습니다.

0

64

2

Toad for Oracle Trial 버전을 지원하지 않는것으로 보입니다.

0

63

1

DECLARE 오류

0

94

2

commit시점은 어떻게 되나요?

1

209

3

트랜잭션 처리의 주체는 누가 될 것인가 에 대해서 궁금합니다.

1

106

2

PL/SQL을 사용하면 어떤 장점이 있나요?

1

219

2

SQL Developer 프로그램 사용 팁 질문 드립니다.

0

612

2

7-3 Explicit Cursor (명시적커서, 사용자정의커서) 질문 있습니다.

1

251

1

11gR2 에서 REAL_ORD 테이블 생성시 DEFAULT 시퀀스 문제

0

514

2

패키지를 반드시 써야하는지?? 수정 될 경우...

1

380

2

real_ord 테이블 포렌키 에러 문의

1

350

1

real_ord 테이블 행 문의 드립니다

0

236

1

11g

0

359

1

테이블 및 컬럼 설명 관련 문의

1

384

1