사용자 정의 레코드의 요소 유형으로 연관 배열을 사용하려고합니다. 이 배열은 학생의 이름, 성 및 학년을 인쇄합니다.Oracle pl/sql - 사용자 생성 레코드와 연관 배열 사용
SET SERVEROUTPUT ON
DECLARE
TYPE studentRec IS RECORD (
STUDENT_ID studentdb.student.student_id%TYPE,
FIRST_NAME STUDENTDB.STUDENT.FIRST_NAME%TYPE,
LAST_NAME STUDENTDB.STUDENT.LAST_NAME%TYPE,
GRADE STUDENTDB.GRADE.NUMERIC_GRADE%TYPE
);
CURSOR studentCursor IS
SELECT STUDENT.STUDENT_ID, STUDENT.FIRST_NAME, STUDENT.LAST_NAME, AVG(GRADE.NUMERIC_GRADE) AS GRADE
FROM STUDENTDB.STUDENT
INNER JOIN STUDENTDB.GRADE
ON STUDENTDB.STUDENT.STUDENT_ID = STUDENTDB.GRADE.STUDENT_ID
GROUP BY STUDENT.STUDENT_ID, STUDENT.FIRST_NAME, STUDENT.LAST_NAME ;
sr studentRec;
TYPE studentArray IS TABLE OF studentRec INDEX BY PLS_INTEGER;
vars studentArray;
BEGIN
FOR rec IN studentCursor LOOP
vars(rec.STUDENT_ID) := rec.FIRST_NAME || ' ' || rec.LAST_NAME || ' has grade ' || rec.GRADE;
END LOOP;
FOR ind IN vars.FIRST .. vars.LAST LOOP
DBMS_OUTPUT.PUT_LINE(vars(ind));
END LOOP;
END;
이 예외 :
오류 보고서 - ORA-06550 : 줄 27, 열 27 : PLS-00382 : 줄 27, 열 : 3 : 표현이 잘못된 유형 ORA-06550의 이다 PL을/SQL : 문을 무시했습니다. ORA-06550 : 줄 33, 열 1 : PLS-00306 : 'PUT_LINE'호출에서 인수가 잘못되었습니다. ORA-06550 : 줄 33, 열 1 : PL/SQL : 문을 무시했습니다. 06550. 00000 - "행 % s, 열 % s : \ n % s" * 원인 : 일반적으로 PL/SQL 컴파일 오류입니다. * 작업 : 당신이 그것을 알고 있다면 당신이 그것을 사용할 수 있지만