PL / SQL 집합 방법
--> 1
DECLARE
output VARCHAR2( 300 );
TYPE index_by_type IS TABLE OF VARCHAR2( 10 )
INDEX BY BINARY_INTEGER;
index_by_table index_by_type;
TYPE nested_type IS TABLE OF NUMBER;
nested_table nested_type -->
:= nested_type( 10,20,30,40 ,50 ,60 ,70,80 ,90,100 );
BEGIN
-- Populate index by table
FOR i IN 1 .. 10 -->
LOOP
index_by_table( i ) := 'Value_' || i;
END LOOP;
DBMS_OUTPUT.
put_line( '--------------------------- Before deleted -----------------------------------------' );
FOR i IN index_by_table.FIRST .. index_by_table.LAST --> first,last,
LOOP
output := output || NVL( TO_CHAR( index_by_table( i ) ), 'NULL' ) || ' ';
END LOOP;
DBMS_OUTPUT.put_line( 'Element of Index_by_table are: ' || output );
output := '';
FOR i IN 1 .. nested_table.COUNT --> count,
LOOP
output := output || NVL( TO_CHAR( nested_table( i ) ), 'NULL' ) || ' ';
END LOOP;
DBMS_OUTPUT.put_line( 'Element of nested_table are: ' || output );
IF index_by_table.EXISTS( 3 ) THEN -->EXISTS 3
DBMS_OUTPUT.put_line( 'index_by_table(3) exists and the value is ' || index_by_table( 3 ) );
END IF;
-- delete 10th element from a collection
nested_table.delete( 10 );
-- delete elements 1 through 3 from a collection
nested_table.delete( 1, 3 );
index_by_table.delete( 10 );
DBMS_OUTPUT.put_line( 'nested_table.COUNT = ' || nested_table.COUNT );
DBMS_OUTPUT.put_line( 'index_by_table.COUNT = ' || index_by_table.COUNT );
DBMS_OUTPUT.put_line( 'nested_table.FIRST = ' || nested_table.FIRST );
DBMS_OUTPUT.put_line( 'nested_table.LAST = ' || nested_table.LAST );
DBMS_OUTPUT.put_line( 'index_by_table.FIRST = ' || index_by_table.FIRST );
DBMS_OUTPUT.put_line( 'index_by_table.LAST = ' || index_by_table.LAST );
DBMS_OUTPUT.put_line( 'nested_table.PRIOR(2) = ' || nested_table.PRIOR( 2 ) );
DBMS_OUTPUT.put_line( 'nested_table.NEXT(2) = ' || nested_table.NEXT( 2 ) );
DBMS_OUTPUT.put_line( 'index_by_table.PRIOR(2) = ' || index_by_table.PRIOR( 2 ) );
DBMS_OUTPUT.put_line( 'index_by_table.NEXT(2) = ' || index_by_table.NEXT( 2 ) );
-- Trim last two elements
nested_table.TRIM( 2 );
-- Trim last element
nested_table.TRIM;
DBMS_OUTPUT.put_line( 'nested_table.LAST = ' || nested_table.LAST );
DBMS_OUTPUT.put_line( '--------------------------- After deleted -----------------------------------------' );
output:='';
FOR i IN index_by_table.FIRST .. index_by_table.LAST -->
LOOP
output := output || NVL( TO_CHAR( index_by_table( i ) ), 'NULL' ) || ' ';
END LOOP;
DBMS_OUTPUT.put_line( 'Element of Index_by_table are: ' || output );
output := '';
output:='';
FOR i IN nested_table.FIRST .. nested_table.LAST -->
LOOP
output := output || NVL( TO_CHAR( nested_table( i ) ), 'NULL' ) || ' ';
END LOOP;
DBMS_OUTPUT.put_line( 'Element of nested_table are: ' || output );
END;
--------------------------- Before deleted -----------------------------------------
Element of Index_by_table are: Value_1 Value_2 Value_3 Value_4 Value_5 Value_6 Value_7 Value_8 Value_9 Value_10
Element of nested_table are: 10 20 30 40 50 60 70 80 90 100
index_by_table(3) exists and the value is Value_3
nested_table.COUNT = 6 --> delete, 1 3 , count 6
index_by_table.COUNT = 9 --> , count 9
nested_table.FIRST = 4 --> 1 3 , first 4
nested_table.LAST = 9 --> , last 9
index_by_table.FIRST = 1
index_by_table.LAST = 9
nested_table.PRIOR(2) = --> PRIOR(2), 2 ( 1), 1-3 , 1 , NULL
nested_table.NEXT(2) = 4 --> 2 , 3, 3 , 3 , 4
index_by_table.PRIOR(2) = 1
index_by_table.NEXT(2) = 3
nested_table.LAST = 7 -->nested_table.TRIM(2) nested_table.TRIM 3 , LAST 7。
--------------------------- After deleted -----------------------------------------
Element of Index_by_table are: Value_1 Value_2 Value_3 Value_4 Value_5 Value_6 Value_7 Value_8 Value_9
Element of nested_table are: 40 50 60 70
PL/SQL procedure successfully completed.
----------------------------------------------------------------------------------------------------------------------------
--> 2
DECLARE
TYPE varray_type IS VARRAY(10) OF NUMBER;
varray varray_type := varray_type(1, 2, 3, 4, 5, 6);
PROCEDURE print_numlist( the_list varray_type ) IS
output VARCHAR2( 128 );
BEGIN
FOR i IN the_list.FIRST .. the_list.LAST
LOOP
output := output || NVL( TO_CHAR( the_list( i ) ), 'NULL' ) || ' ';
END LOOP;
DBMS_OUTPUT.put_line( output );
END;
BEGIN
print_numlist( varray );
DBMS_OUTPUT.put_line( 'varray.COUNT = ' || varray.COUNT );
DBMS_OUTPUT.put_line( 'varray.LIMIT = ' || varray.LIMIT );
DBMS_OUTPUT.put_line( 'varray.FIRST = ' || varray.FIRST );
DBMS_OUTPUT.put_line( 'varray.LAST = ' || varray.LAST );
DBMS_OUTPUT.put_line( 'The maximum number you can use with ' || 'varray.EXTEND() is ' || ( varray.LIMIT - varray.COUNT ) );
varray.EXTEND( 2, 4 ); --> 4 2 ,
DBMS_OUTPUT.put_line( 'varray.LAST = ' || varray.LAST );
DBMS_OUTPUT.put_line( 'varray(' || varray.LAST || ') = ' || varray( varray.LAST ) );
print_numlist( varray );
-- Trim last two elements
varray.TRIM( 2 );
DBMS_OUTPUT.put_line( 'varray.LAST = ' || varray.LAST );
END;
1 2 3 4 5 6 --> varray
varray.COUNT = 6
varray.LIMIT = 10 -->limit
varray.FIRST = 1
varray.LAST = 6
The maximum number you can use with varray.EXTEND() is 4 --> extend , 4
varray.LAST = 8 --> extend last 8
varray(8) = 4 --> 8 4
1 2 3 4 5 6 4 4 --> varray
varray.LAST = 6 --> varray.TRIM( 2 ), last 6
PL/SQL procedure successfully completed.
-->Author : Robinson Cheng
-->Blog : http://blog.csdn.net/robinson_0612
3. 더 많은 참고
PL / SQL 집합 초기 화 및 할당
PL / SQL 연합 배열 과 내장 표 PL / SQL 이 길 어 지 는 배열 PL / SQL -- > PL / SQL 기록
SQL 튜 닝 절차
고 효율 SQL 구문 필 살기
부모 커서, 하위 커서 및 공유 커서
바 인 딩 변수 및 장단 점
dbms_xplan 의 displaycursor 함수 사용
dbms_xplan display 함수 사용
실행 계획 의 필드 별 모듈 설명
EXPLAIN PLAN 을 사용 하여 SQL 문장 실행 계획 가 져 오기
AUTORCE 기능 사용 하기
함수 가 색인 열 을 무효 화 합 니 다.
Oracle 바 인 딩 변수 탐색
Oracle 자체 적응 공유 커서
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Vuetify에서 행 그룹화이 기사에서는 유사한 값으로 테이블의 행을 그룹화하는 방법에 대한 경험을 공유하고자 합니다. 물론 기본 그룹화 예제를 찾을 수 있지만 제 사용 사례에는 약간의 고급 기능이 필요했습니다. 제품 데이터가 있다고 가정합니...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.