원하는 작업 : 사용자 정의 함수를 사용하고 사용자 정의 유형을 사용하여 테이블에서 데이터를 검색하십시오.함수를 통해 테이블에서 행을 검색하십시오.
create table ACCOUNTCONTRACT
(
accountcode_ VARCHAR2(255 CHAR),
accountmig_ NUMBER(1),
accountnumber_ VARCHAR2(25 CHAR) not null,
accountpk_ NUMBER(19),
addinfo1_ VARCHAR2(255 CHAR),
addinfo2_ VARCHAR2(255 CHAR),
...
내가 무슨 짓을했는지 : 내 사용자 정의 유형 작성
CREATE OR REPLACE TYPE "FO_OUTPUT" AS OBJECT
(
NUMCPT VARCHAR2(10),
ACTIONACCOUNT VARCHAR2(50)
)
및
CREATE OR REPLACE TYPE "FO_OUTPUT_TABLE" AS TABLE OF FO_OUTPUT
내 기능은 다음과 같습니다
내 테이블의 구조는 다음과 같다
CREATE OR REPLACE FUNCTION OUTPUT_FO RETURN FO_OUTPUT_TABLE AS
RETVAL FO_OUTPUT_TABLE := FO_OUTPUT_TABLE();
TMPLINE FO_OUTPUT;
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
FOR I IN (SELECT SUBSTR(ACC.ACCOUNTNUMBER_, 1, 10) AS NUMCPT,
ACC.ACCOUNTNUMBER_ AS ACTIONACCOUNT
INTO TMPLINE.NUMCPT, TMPLINE.ACTIONACCOUNT
FROM ACCOUNTCONTRACT ACC
WHERE ROWNUM < 10) LOOP
RETVAL.EXTEND;
RETVAL(RETVAL.COUNT) := TMPLINE;
END LOOP;
RETURN(RETVAL);
END OUTPUT_FO;
Now 실행할 때 :`SELECT * FROM TABLE (OUTPUT_FO) 내가 얻은 것은 10 개의 빈 행입니다.
내 코드가 잘못되었습니다. Thnx
나는 "속을 선택"의 사용을 혼동. 복합 형을 초기화해야했습니다. –
오른쪽에 'TMPLINE'을 초기화해야합니다. –