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

넬슨 SMG

레코드 유형의 테이블을 반환하는 패키지에 정의 된 함수를 테스트하려고 할 때 '표현식이 잘못된 유형입니다'라는 메시지가 표시됩니다.
헤더는 다음과 같습니다.

create or replace package pck_prestamos is
type r_cuotas is record
    (saldo_capital number(12),
    amortizacion number(12),
    interes number(12),
    seguro_vida number(8),
    monto_cuota number(15),
    fecha_vencimiento date);
type t_cuotas is table of r_cuotas
    index by binary_integer;
--v_cuotas t_cuotas;
function f_calcular_cuotas(monto_p number,t_i_a number, plazo_p number, fecha_d date) return t_cuotas;
end;
/

그리고 여기에 본문이 있습니다.

create or replace package body pck_prestamos is
function f_calcular_cuotas(monto_p number,t_i_a number, plazo_p number, fecha_d date) return t_cuotas is
    saldo_capital_ant number;
    amortizacion_capital_ant number;
    diferencia number;
    porc_seg_v gen_parametros.porc_seg_vida%type;
    v_cuotasf t_cuotas;
begin
    select porc_seg_vida into porc_seg_v
        from gen_parametros;
    for i in 1..plazo_p loop
        if i = 1 then 
            v_cuotasf(i).saldo_capital := monto_p;
            saldo_capital_ant := v_cuotasf(i).saldo_capital;
            amortizacion_capital_ant := monto_p/plazo_p;
        else
            v_cuotasf(i).saldo_capital := saldo_capital_ant - amortizacion_capital_ant;
            saldo_capital_ant := v_cuotasf(i).saldo_capital;
        end if;
        if i = plazo_p then
            diferencia := v_cuotasf(i).saldo_capital - amortizacion_capital_ant;
            v_cuotasf(i).amortizacion := (monto_p/plazo_p) + diferencia;
        else 
            v_cuotasf(i).amortizacion := monto_p/plazo_p;
        end if;
        v_cuotasf(i).interes := ((t_i_a/12)/100)*v_cuotasf(i).saldo_capital;
        v_cuotasf(i).seguro_vida := (porc_seg_v/100)*v_cuotasf(i).saldo_capital;
        v_cuotasf(i).monto_cuota := v_cuotasf(i).amortizacion + v_cuotasf(i).interes + v_cuotasf(i).seguro_vida;
        v_cuotasf(i).fecha_vencimiento := fecha_d + 30*i; 
    end loop;
    return v_cuotasf;
end;
end;
/

테스트하는 방법은 다음과 같습니다.

declare
type r_cuotas is record
    (saldo_capital number(12),
    amortizacion number(12),
    interes number(12),
    seguro_vida number(8),
    monto_cuota number(15),
    fecha_vencimiento date);
type t_cuotas is table of r_cuotas
    index by binary_integer;
v_cuotas t_cuotas;
begin
v_cuotas := pck_prestamos.f_calcular_cuotas(10000000,10,18,sysdate);
end;
/

패키지의 두 부분 모두 문제없이 컴파일됩니다.
전체 오류는 다음과 같습니다.

ERROR at line 13:  
ORA-06550: line 13, column 13:  
PLS-00382: expression is of wrong type  
ORA-06550: line 13, column 1:  
PL/SQL: Statement ignored 

내가 뭔가를 놓치고 있습니까? 감사.

밥 자비스-모니카 복원

Oracle의 관점에서 볼 t_cuotas때 테스트 블록에 선언 된 것은 패키지에 선언 된 것과 다른 유형입니다. 비록 그들이 동일한 요소를 갖고 있고 당신과 나에게 똑같이 "보일 수있다". t_cuotas패키지 이름으로 정규화하여 패키지에 정의 된를 사용해야합니다 .

declare
  v_cuotas pck_prestamos.t_cuotas;
begin
  v_cuotas := pck_prestamos.f_calcular_cuotas(10000000,10,18,sysdate);
end;
/

시도해보세요.

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

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

Oracle은 정의 된 유형의 테이블에 추가 된 레코드로 패키지의 정의 된 유형을 사용합니다.

Oracle PLS-00382 : 표현식이 잘못된 유형 06550입니다.

Oracle PLS-00382 : 표현식이 잘못된 유형 06550입니다.

"표현식이 잘못된 유형입니다"를 표시하는 전역 사용자 정의 유형이 있는 Oracle SQL TABLE 연산자

Oracle에서 표현식의 데이터 유형 반환

식이 잘못된 유형입니다.-Oracle 오류

Java Lambda 표현식 : 호환되지 않는 유형 : 람다 표현식의 잘못된 반환 유형

ORACLE 표현식이 파이프 라인 함수 (다중 조인 테이블)에서 잘못된 유형입니다.

잘못된 메서드 선언 : 반환 유형이 없습니다.

dig가 잘못된 레코드 유형을 반환합니다.

SQL 오류 '열 "zona"는 상자 유형이지만 표현식은 레코드 유형입니다.'

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

Rust가 잘못된 반환 유형을 가진 코드를 허용하지만 후미 세미콜론 만있는 이유는 무엇입니까?

비동기에 잘못된 반환 유형이 있습니다.

IDictionary.Item이 잘못된 유형을 반환합니다.

ObservableCollection이 잘못된 유형을 반환합니다.

잘못된 반환 유형 모노 게임이 있습니다.

Finfo_file이 잘못된 유형을 반환합니다.

TagGroupGetTagType이 잘못된 유형을 반환합니다.

Java 15-getter의 반환 유형이 다른 레코드

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

IOrganizationService.Update ()가 "지정된 레코드 유형이 Microsoft Dynamics CRM에 없습니다."를 반환하는 이유는 무엇입니까?

Typescript는 레코드 유형을 반복하고 업데이트 된 레코드를 반환합니다.

이 코드를 사용했지만 잘못된 문자열 형식으로 오류를 반환합니다.

표현식이 함수에 대해 잘못된 유형입니다.

PLS-00382 : 커서에서 표현식이 잘못된 유형입니다.

plsql이 코드 오류 'INTO 목록이 잘못된 유형입니다'의 문제점

잘못된 유형의 표현식

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을 반환합니다.

뜨겁다태그

보관