database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Tutorials 11932 게시물 읽기
No. 11932
VARRAY 사용시 ORA-6533 ERROR
작성자
정재익(advance)
작성일
2002-09-07 21:07
조회수
10,363

VARRAY 사용시 ORA-6533 ERROR

============================

 

원본출처 : http://www.cyberlab.pe.kr/oracle_metalink/read.neo?id=1&cn=1&tn=1&ln=9&pn=20&lv=0&topic=

 

PURPOSE

---------

VARRAY를 사용하다 보면 ORA-6533 이라는 error 를 만나게 된다

이는 VARRAY는 default 로 3개의 element 이상을 가져 올수 없기 때문이다

 

이 경우에는 EXTEND method를 이용하여 해결할 수 있다.

 

 

Problem Description

-------------------

bul 12280을 예로 들겠다.

 

declare

type tax_list is record(

tcode varchar2(5),

tval1 emp.empno%type);

type tax_array is varray(10) of tax_list;

tax_rule tax_array:=tax_array(null,null);

begin

tax_rule(1).tcode:='213';

tax_rule(1).tval1:=0;

dbms_output.put_line('tax_rule(1).tcode:'|| tax_rule(1).tcode);

dbms_output.put_line('tax_rule(1).tval1:'||tax_rule(1).tval1);

tax_rule(2).tcode:='213';

tax_rule(2).tval1:=0;

dbms_output.put_line('tax_rule(2).tcode:'|| tax_rule(2).tcode);

dbms_output.put_line('tax_rule(2).tval1:'||tax_rule(2).tval1);

tax_rule(3).tcode:='213';

tax_rule(3).tval1:=0;

dbms_output.put_line('tax_rule(3).tcode:'|| tax_rule(3).tcode);

dbms_output.put_line('tax_rule(3).tval1:'||tax_rule(3).tval1);

tax_rule(4).tcode:='213';

tax_rule(4).tval1:=0;

dbms_output.put_line('tax_rule(4).tcode:'|| tax_rule(4).tcode);

dbms_output.put_line('tax_rule(4).tval1:'||tax_rule(4).tval1);

tax_rule(5).tcode:='213';

tax_rule(5).tval1:=0;

dbms_output.put_line('tax_rule(5).tcode:'|| tax_rule(5).tcode);

dbms_output.put_line('tax_rule(5).tval1:'||tax_rule(5).tval1);

end;

/

 

->error

 

SQL> /

tax_rule(1).tcode:213

tax_rule(1).tval1:0

tax_rule(2).tcode:213

tax_rule(2).tval1:0

declare

*

ERROR at line 1:

ORA-06533: Subscript beyond count

ORA-06512: at line 17

 

 

Workaround

-----------

tax_rule.extend(6);를 추가하면 됩니다.

 

 

다음과 같이 ...

dbms_output.put_line('tax_rule(2).tcode:'|| tax_rule(2).tcode);

dbms_output.put_line('tax_rule(2).tval1:'||tax_rule(2).tval1);

tax_rule.extend(6);

tax_rule(3).tcode:='213';

tax_rule(3).tval1:=0;

 

 

Solution Description:

---------------------

extend는 varray가 얼마나 더 추가 될수 있는지에 따라 값을 주면 됩니다.

 

 

Reference Ducument

------------------

Note:1065346.6

SCR(sample code repository) 1312번 varrayExtend.sql 참조.

[Top]
No.
제목
작성자
작성일
조회
11935DBMS_JOB PACKAGE의 사용 방법과 예제
정재익
2002-09-07
10610
11934NLS_DATE_FORMAT에 대한 고려
정재익
2002-09-07
8862
11933UTL_SMTP PACKAGE을 사용하여 E-MAIL을 GENERATE하는 과정
정재익
2002-09-07
10425
11932VARRAY 사용시 ORA-6533 ERROR
정재익
2002-09-07
10363
11870Oracle9i 리눅스용 설치 가이드
정재익
2002-08-31
8845
11843Oracle 8i Database를 SQL Server 2000에 Linked Server로 연결하기 위한 연결 설정
정재익
2002-08-29
8781
11776Oracle XA and TP Monitor FAQ
정재익
2002-08-23
7755
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.048초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다