난 항상 기본 HR 스키마를rowtype을 사용하여 레코드에 커서를 가져올 수 있습니까?
CREATE OR REPLACE PACKAGE EMP_PKG AS
TYPE T_EMP_REC IS RECORD (
V_EMP_TAB EMPLOYEES%ROWTYPE,
V_DEPT_NAME DEPARTMENTS.DEPARTMENT_NAME%TYPE
);
FUNCTION GET_EMP (P_EMP_ID EMPLOYEES.EMPLOYEE_ID%TYPE) RETURN T_EMP_REC;
END EMP_PKG;
/
CREATE OR REPLACE PACKAGE BODY EMP_PKG AS
FUNCTION GET_EMP (P_EMP_ID EMPLOYEES.EMPLOYEE_ID%TYPE)
RETURN T_EMP_REC
AS
CURSOR V_EMP_CUR IS
SELECT E.*, D.DEPARTMENT_NAME
FROM EMPLOYEES E, DEPARTMENTS D
WHERE E.EMPLOYEE_ID = P_EMP_ID
AND E.DEPARTMENT_ID = D.DEPARTMENT_ID;
V_EMP_REC T_EMP_REC;
BEGIN
OPEN V_EMP_CUR;
FETCH V_EMP_CUR INTO V_EMP_REC;
CLOSE V_EMP_CUR;
RETURN V_EMP_REC;
END GET_EMP;
END EMP_PKG;
열 일치의 수를 사용하고 있는데 난 항상 테이블과 동일한 형식을 사용하고,
PLS-00597: expression 'V_EMP_REC' in the INTO list is of wrong type
여기 패키지의 얻고있다. 레코드 형식의 모든 열을 선언하는 대신이 방법이 가능한지 여부는 알 수 없습니다.
명시 적으로 컬렉션에employees
및
departments
의 모든 열을 선언해야
감사합니다! 어떻게 함수를 호출 할 때 레코드를 출력 할 수 있습니까? –
@ Rishabh Jain 대답을 참조하십시오. 레코드를 인쇄하기 위해서는 레코드의 각 열을 명시 적으로 액세스해야합니다 (예 : DBMS_OUTPUT.PUT_LINE ('Col1 :'|| V_EMP_REC.employees_col1 || ', Col2 :'|| V_EMP_REC.employees_col2 ...') Oracle 설명서 : [12c] (https://docs.oracle.com/database/121/LNPLS/composites.htm#LNPLS005), [11g] (https://docs.oracle.com/cd/B28359_01/appdev.111) /b28370/collections.htm#LNPLS005), [10g] (https://docs.oracle.com/cd/B14117_01/appdev.101/b10807/05_colls.htm) – Guillaume