문제

PL/SQL에 정의 된 몇 가지 데이터 유형이 있다고 가정합니다.

TYPE foo_t IS RECORD (...);
TYPE foo_table_t IS TABLE OF foo_t INDEX BY BINARY_INTEGER;

TYPE bar_t IS RECORD (...);
TYPE bar_table_t IS TABLE OF bar_t INDEX BY BINARY_INTEGER;

테이블에서 파생 된 데이터 유형을 수락 할 수있는 절차를 작성할 수 있습니까 (예 : foo_table_t 또는 a bar_table_t) 매개 변수로? 절차는 테이블의 행 유형에 대한 지식이 필요하지 않습니다. 사소한 예 :

PROCEDURE remove_last(some_table ...) IS
BEGIN
    some_table.DELETE(some_table.LAST);
END;
도움이 되었습니까?

해결책

직접적이지 않습니다. PL/SQL 프로그래머 안내서 :

"실제 매개 변수와 해당 공식 매개 변수에는 호환 가능한 데이터 유형이 있어야합니다."

PL/SQL은 실제 매개 변수 데이터 유형을 공식 매개 변수 데이터 유형으로 암시 적으로 변환합니다. 따라서 문자열을 원하는 절차에 숫자 값을 전달할 수 있으며 암시 적 변환을 수행 할 수 있기 때문에 작동합니다.

당신이 할 수있는 최선은 과부하 된 절차를 작성하는 것입니다.

프로 시저 일반 (foo in foo_t);

프로 시저 제네릭 (bar_t의 막대);

그런 다음 레코드 유형 중 하나로 제네릭을 호출 할 수 있습니다. 이것은 다음을 처리 할 레코드 유형의 수에 비례하여 매력을 잃습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top