Oracle Database 배열 타입의 컬럼을 포함하는 테이블을 생성하는 방법 0 4 414

by 만단 [Oracle 기초] [2020.04.02 11:14:47]


DECLARE

    TYPE students IS TABLE OF VARCHAR2(20)

    INDEX BY PLS_INTEGER;

 

    v_students students;

BEGIN

    v_students(1) = '김철수';

    v_students(2) = '김영미';

    v_students(3) = '아무개';

END;

/

 

안녕하세요.

저는 배열 타입의 컬럼을 포함하는 테이블을 생성하고 싶습니다.

그래서 검색을 하다 보니 위와 같은 방법을 찾게 되었는데요.

문제는 위처럼 생성한 배열 변수를 아래와 같이 테이블의 컬럼으로 사용할 수 있는 방법을 잘 모르겠습니다.

어떻게 하면 배열 타입의 컬럼을 사용할 수 있을까요?

 

CREATE TABLE(

    v_students

);

by pajama [2020.04.02 13:25:55]

varray data type이란게 있긴하네요.. 예제 따라서 만들어봤습니다. 원하시는 게 맞는지 모르겠군요.

https://docs.oracle.com/cd/B28359_01/appdev.111/b28371/adobjcol.htm#i458789

 

SQL> CREATE TYPE student_typ AS OBJECT (student_name VARCHAR2(100));
  2  /

Type created.

SQL> CREATE TYPE student_varray_typ AS VARRAY(3) OF student_typ;
  2  /

Type created.

SQL> CREATE TABLE mytab (student student_varray_typ);

Table created.

SQL> INSERT INTO mytab VALUES ( student_varray_typ ( student_typ ('김철수'), student_typ ('김영미'), student_typ ('아무개')));

1 row created.

SQL> select * from mytab;

STUDENT(STUDENT_NAME)
----------------------------------------------------------------------------------------------------
STUDENT_VARRAY_TYP(STUDENT_TYP('김철수'), STUDENT_TYP('김영미'), STUDENT_TYP('아무개'))

 


by 만단 [2020.04.02 15:32:19]

답변 정말 감사합니다.

이런 것도 있었군요~


by 마농 [2020.04.02 22:12:40]

가능은 한데... 굳이 이렇게까지 할 필요가 있을지???

그냥 테이블 두개로 만들어 조인하면 되는데요.

입력도 까다롭고 꺼내 쓰기도 까다로울 것 같아요.


by pajama [2020.04.02 22:54:21]

다른 db들도 user define type이 있긴 하던데..어떻게 활용하는지는 사실 잘 모르겠더군요.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입