select 문에서 "is table of"유형 사용

이카로

아래 코드에 따라 (oracle 11g 사용) 이전 select 문에서 선택한 필드를 선택하는 select 문을 만들려고합니다.

    Declare 
    type NumberArray IS TABLE OF Number;
    v_medium NumberArray;
    v_medium_final NumberArray := NumberArray(); 
    v_count number;
    type VarcharArray IS TABLE OF VARCHAR2(60);
    v_Type VarcharArray
    --Select all Regions and Locality affected by the fault
    cursor Locality_cur is
      Select LocalityCode from AvaFaultLocality where FAULTID=36841 and SITEID=1;
      Locality_rec Locality_cur%ROWTYPE;
    cursor Region_cur is
      Select RegionCode  from avafaultregion where FAULTID=36841 and SITEID=1;
      Region_rec Region_cur%ROWTYPE;
Begin
      v_count := 1; 
      FOR Region_rec IN Region_cur
      LOOP
        dbms_output.put_line(Region_rec.RegionCode);
        Select RECIPIENTMEDIUMID BULK COLLECT into v_medium from  AvaRecipientAreaRegion where RegionCode = Region_rec.RegionCode;

       FOR idx IN 1..v_medium.COUNT LOOP
         v_medium_final.extend(); 
         v_medium_final(v_count) := v_medium(idx); 
         dbms_output.put_line(TO_CHAR(v_medium(idx)));
         v_count:= v_count + 1;
       END LOOP;  
       dbms_output.put_line('End Loop for Region '||Region_rec.RegionCode);     
      END LOOP;
      dbms_output.put_line(TO_CHAR(v_medium_final.count));
      Select MEDIUMTYPECODE BULK COLLECT into v_Type from AvaRecipientMedium where RECIPIENTMEDIUMID in (SELECT * FROM TABLE(v_medium_final)); <--- Line with problem
End;

주로 내가하려는 것은 모든 지역의 콘텐츠를 선택하고이 결과를 반복하여 해당 지역의 모든 지역 콘텐츠를 가져온 다음 각 지역의 모든 RecipientMediumID를 가져와 v_medium_final이라는 변수에 결과를 추가하는 것입니다. 이 부분은 완벽하게 작동합니다. 문제는이 선택의 결과를 사용하여 모든 값이 v_medium_final 변수에있는 RecipientMedium 테이블의 값을 선택하려고 할 때입니다.

나는 사용을 시도한다 :

Select MEDIUMTYPECODE BULK COLLECT into v_Type from AvaRecipientMedium where RECIPIENTMEDIUMID in (SELECT * FROM TABLE(v_medium_final));

또는

Select MEDIUMTYPECODE BULK COLLECT into v_Type from AvaRecipientMedium where RECIPIENTMEDIUMID in v_medium_final;

하지만 항상 오류가 발생합니다.

 [Error] Execution (32: 126): ORA-06550: line 32, column 126:
PLS-00642: local collection types not allowed in SQL statements
ORA-06550: line 32, column 120:
PL/SQL: ORA-22905: cannot access rows from a non-nested table item
ORA-06550: line 32, column 7:
PL/SQL: SQL Statement ignored

두 번째 경우 : [오류] 실행 (32 : 106) : ORA-06550 : 32 행, 106 열 :

PLS-00642: local collection types not allowed in SQL statements
저스틴 케이브

오류에서 알 수 있듯이 로컬 컬렉션 유형을 사용할 수 없습니다. SQL 수준에서 정의 된 컬렉션 유형을 사용해야합니다.

CREATE TYPE NumberArray
    AS TABLE OF NUMBER;

DECLARE
  v_medium NumberArray;
  ...

이를 위해서는 CREATE TYPE권한 이 있어야하며 PL / SQL 블록의 범위 만 가지고있는 것이 아니라 볼 수있는 권한이있는 모든 사람이 유형 정의를 볼 수 있습니다.

개인적으로 나는 단순히 이름이 혼란 스러울 수 있기 때문에 Array컬렉션 유형의 이름을 사용 하지 않을 것 VARRAY입니다. 유형 이 표시되면 중첩 테이블 유형 NumberArrayVARRAY(n) OF NUMBER아닌 것으로 정의 된 것 같습니다 . ntt중첩 테이블 유형에 접미사를 사용하는 것이 더 합리적으로 보입니다 ( create type number_ntt as table of number).

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

SELECT 문에서 테이블 유형 사용

분류에서Dev

linq에서 IF 유형 문을 사용하여 엔티티 SELECT NEW 절 C #

분류에서Dev

Spring에서 Select : multiple에 어떤 유형이 사용됩니까?

분류에서Dev

postgres의 alter table 문 내에서 select 결과 사용

분류에서Dev

지정된 인덱스없이 SELECT 문에서 로컬 테이블 유형 사용

분류에서Dev

Oracle의 select 문 내에서 select 사용

분류에서Dev

SQL Select를 사용하여 열에서 고유 한 특수 문자 추출

분류에서Dev

ALTER TABLE ALTER COLUMN의 USING 절에서 SELECT 사용?

분류에서Dev

if 문에 Double 데이터 유형 사용

분류에서Dev

eloquent select 문에서 SQL 함수 사용

분류에서Dev

select 문에서 to WHERE 절 사용

분류에서Dev

select 문에서 to WHERE 절 사용

분류에서Dev

SELECT 문에서 DATE_FORMAT 사용

분류에서Dev

Oracle-SELECT 문에서 변수 사용

분류에서Dev

Java에서 제네릭 및 유형 추론 사용 문제

분류에서Dev

C ++에서 다양한 문자 유형 사용

분류에서Dev

데이터 유형에서 CASE 문 사용

분류에서Dev

유사 인용문에서 ClassSymbol 사용

분류에서Dev

ApolloServer에서 유형 사용 중단

분류에서Dev

정의에서 typedef 유형 사용

분류에서Dev

Haskell에서 유형 재사용

분류에서Dev

기본 유형에서 std :: declval 사용

분류에서Dev

SQL에서 $ this 유형 함수 사용

분류에서Dev

JavaScript에서 HTML 파일 유형 사용

분류에서Dev

Java에서 Oracle 유형 사용

분류에서Dev

익명 유형에서 변수 사용

분류에서Dev

익명 유형에서 변수 사용

분류에서Dev

dotnetcore에서 제네릭 유형 사용

분류에서Dev

typescript에서 확장 유형을 사용한 유형 추론

Related 관련 기사

뜨겁다태그

보관