테이블 유형을 반환할 때 Oracle 함수의 잘못된 유형

비토테

내 패키지 헤더가 있습니다.

CREATE OR REPLACE PACKAGE my_package is 
    TYPE my_type IS
       TABLE OF VARCHAR2(256) INDEX BY BINARY_INTEGER;
    FUNCTION my_func return my_type;
END my_package;

my_func그리고 레스토랑 컬렉션을 반환하는 기능이 있는 본문 :

CREATE OR REPLACE PACKAGE BODY my_package is
    FUNCTION my_func RETURN my_type IS
        restaurants_table my_type; 
    BEGIN
        select ADRESS
         BULK COLLECT  INTO restaurants_table
        from restaurants 
        FETCH NEXT 3 ROWS ONLY;
        
        RETURN restaurants_table;
    END my_func;
END my_package;

이 함수를 호출하고 싶습니다.

declare 
    TYPE my_type IS
       TABLE OF VARCHAR2(256) INDEX BY BINARY_INTEGER;
   restaurants_table my_type; 
begin
    restaurants_table := my_package.my_func();
end;

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

PLS-00382: expression is of wrong type

이것은 함수에서 변수로 반환 값을 할당하려고 할 때 발생합니다.

restaurants_table := my_package.my_func();

내 테이블 유형 변수에 반환 값을 가질 수 있도록 어떻게 함수를 올바르게 호출할 수 restaurants_table있습니까? 나중에 색인으로 인쇄하고 싶습니다.

dbms_output.put_line(restaurants_table(1));
리틀풋

이 함수를 호출하고 싶습니다.

해야한다

restaurants_table my_package.my_type;

대신에

TYPE my_type IS
   TABLE OF VARCHAR2(256) INDEX BY BINARY_INTEGER;
restaurants_table my_type; 

나는 당신의 테이블이 없으므로 Scott의 것을 사용했습니다 DEPT.

SQL> CREATE OR REPLACE PACKAGE my_package is
  2      TYPE my_type IS
  3         TABLE OF VARCHAR2(256) INDEX BY BINARY_INTEGER;
  4      FUNCTION my_func return my_type;
  5  END my_package;
  6  /

Package created.

SQL> CREATE OR REPLACE PACKAGE BODY my_package is
  2      FUNCTION my_func RETURN my_type IS
  3          restaurants_table my_type;
  4      BEGIN
  5          select dname
  6           BULK COLLECT  INTO restaurants_table
  7          from dept
  8          FETCH NEXT 3 ROWS ONLY;
  9
 10          RETURN restaurants_table;
 11      END my_func;
 12  END my_package;
 13  /

Package body created.

테스트:

SQL> declare
  2    restaurants_table my_package.my_type;
  3  begin
  4      restaurants_table := my_package.my_func();
  5      for i in 1 .. restaurants_table.count loop
  6        dbms_output.put_line(restaurants_table(i));
  7      end loop;
  8  end;
  9  /
ACCOUNTING
RESEARCH
SALES

PL/SQL procedure successfully completed.

SQL>

반면에 해당 목적으로 Oracle의 내장 유형을 사용할 수 있습니다 sys.odcivarchar2list.

SQL> CREATE OR REPLACE PACKAGE my_package is
  2      FUNCTION my_func return sys.odcivarchar2list;
  3  END my_package;
  4  /

Package created.

SQL> CREATE OR REPLACE PACKAGE BODY my_package is
  2      FUNCTION my_func RETURN sys.odcivarchar2list IS
  3          restaurants_table sys.odcivarchar2list;
  4      BEGIN
  5          select dname
  6           BULK COLLECT  INTO restaurants_table
  7          from dept
  8          FETCH NEXT 3 ROWS ONLY;
  9
 10          RETURN restaurants_table;
 11      END my_func;
 12  END my_package;
 13  /

Package body created.

SQL> set serveroutput on
SQL> declare
  2     restaurants_table sys.odcivarchar2list;
  3  begin
  4      restaurants_table := my_package.my_func();
  5
  6      for i in 1 .. restaurants_table.count loop
  7        dbms_output.put_line(restaurants_table(i));
  8      end loop;
  9  end;
 10  /
ACCOUNTING
RESEARCH
SALES

PL/SQL procedure successfully completed.

SQL>

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Oracle- '표현식이 잘못된 유형입니다'패키지의 레코드 유형 테이블 반환

컬렉션을 함수로 전달할 때 잘못된 데이터 유형

PL / SQL 함수에서 테이블 반환-잘못된 데이터 유형

잘못된 인수 유형 listp, "GIF"목록을 반전 할 때

FSharp의 함수에서 함수를 반환 할 때 유형 추론을 이해하지 못함

새 Date() 유형을 사용할 때 잘못된 월이 발생함

TypeScript가 "잘못된" 함수 반환 유형을 보고하지 않는 이유

PouchDB가 잘못된 이미지 첨부 유형을 반환 함

Typescript 함수 / 콜백 유형 : "잘못된"반환 값으로 함수를 할당 할 때 오류 없음

자바 스크립트 함수를 테스트 할 때 잘못된 유형의 오류

스크롤 할 때 테이블보기가 잘못된 값을 반환 함

반환 유형이 const 일 때 반환 된 값을 수정할 수있는 이유는 무엇입니까?

`map` Kotlin의 잘못된 반환 유형

개혁과 함께 simple_form을 사용할 때 잘못된 유형이 사용됨

함수 변형을 방문 할 때 "잘못된 변환"오류

Typescript: "Function" 유형의 속성을 선언할 때 함수 반환 유형 지정

``org-agenda`를 사용할 때 잘못된 유형 인수

java.lang.ArrayStoreException : Object [] 배열에 잘못된 유형의 값을 할당 할 때

잘못된 데이터 유형 함수

매개 변수 상위 유형을 하위 입력 할 때 julia 잘못된 유형

for 루프를 사용할 때 테이블 형식이 잘못된 이유는 무엇입니까?

반환 유형을 힌트 할 때 : self와 ClassName의 차이점

이 함수 유형이 "잘못된 유형"인 이유

기존 테이블에서 기본 키를 생성 할 때 잘못된 데이터 유형 오류

Rxjs 스위치 맵에서 개체를 반환할 때 잘못된 인수 유형

TypeScript가 함수의 반환 유형을 유추할 때 리터럴 유형을 자동으로 사용하지 않는 이유는 무엇입니까?

libcurl이 오류 3 : 잘못된 / 잘못된 형식을 사용하는 URL 또는 std :: string 변수를 사용할 때 URL 누락을 반환합니다.

pl / sql 블록의 DECLARE 섹션에 선언 된 사용자 지정 유형을 반환하는 함수에 액세스 할 때 Oracle 12c의 PLS-00642 및 ORA-22905

테이블에 저장된 유형의 Postgresql 반환 변수

TOP 리스트

  1. 1

    JNDI를 사용하여 Spring Boot에서 다중 데이터 소스 구성

  2. 2

    std :: regex의 일관성없는 동작

  3. 3

    JSoup javax.net.ssl.SSLHandshakeException : <url>과 일치하는 주체 대체 DNS 이름이 없습니다.

  4. 4

    PrematureCloseException : 연결이 너무 일찍 닫혔습니다.

  5. 5

    Xcode10 유효성 검사 : 이미지에 투명성이 없지만 여전히 수락되지 않습니까?

  6. 6

    정점 셰이더에서 카메라에서 개체까지의 XY 거리

  7. 7

    Ionic 2 로더가 적시에 표시되지 않음

  8. 8

    Seaborn에서 축 제목 숨기기

  9. 9

    C #에서 'System.DBNull'형식의 개체를 'System.String'형식으로 캐스팅 할 수 없습니다.

  10. 10

    복사 / 붙여 넣기 비활성화

  11. 11

    ArrayBufferLike의 typescript 정의의 깊은 의미

  12. 12

    Google Play Console에서 '예기치 않은 오류가 발생했습니다. 나중에 다시 시도해주세요. (7100000)'오류를 수정하는 방법은 무엇입니까?

  13. 13

    Kubernetes Horizontal Pod Autoscaler (HPA) 테스트

  14. 14

    jfreecharts에서 x 및 y 축 선을 조정하는 방법

  15. 15

    PRNG 기간보다 순열이 더 많은 목록을 무작위로 섞는 방법은 무엇입니까?

  16. 16

    C # HttpWebRequest 기본 연결이 닫혔습니다. 전송시 예기치 않은 오류가 발생했습니다.

  17. 17

    다음 컨트롤이 추가되었지만 사용할 수 없습니다.

  18. 18

    잘못된 구성 개체입니다. Webpack이 Angular의 API 스키마와 일치하지 않는 구성 개체를 사용하여 초기화되었습니다.

  19. 19

    Android Kotlin은 다른 활동에서 함수를 호출합니다.

  20. 20

    R의 마침표와 숫자 사이에 문자열 삽입

  21. 21

    Assets의 BitmapFactory.decodeStream이 Android 7에서 null을 반환합니다.

뜨겁다태그

보관