0

1 つの行を rowType 変数にフェッチしました。この行には 80 列あります。そのため、プログラムで列名をハードコーディングしたり、データ ディクショナリから列名をフェッチしたりしたくありません。

個々の列の値にアクセスするにはどうすればよいですか????? 以下は私のコードです。

DECLARE
fetchedRow EMP%ROWTYPE;
TYPE columnNameList IS TABLE OF USER_TAB_COLUMNS.column_name%TYPE;
CURSOR empCursor IS select column_name from USER_TAB_COLUMNS where table_name = 'EMP';
empColumnNames columnNameList;
colName varchar2(100);
BEGIN
    -- Fetching column names of EMP from data dictionary
    OPEN  empCursor;
    FETCH empCursor BULK COLLECT INTO empColumnNames;
    CLOSE empCursor;
    DBMS_OUTPUT.PUT_LINE('Columns fetched');

BEGIN
    SELECT * into fetchedRow from EMP where EMP_ID = 1234;
END;

colName := 'fetchedRow.'||empColumnNames(1);   --- colName will have fetchedRow.EMP_ID
DBMS_OUTPUT.PUT_LINE('Going to Compare'||colName);

--stuck here
     if colName = 1234 then  -- Want to compare value of fetchedRow.EMP_ID with 1234
        DBMS_OUTPUT.PUT_LINE('Matching');
    else
    DBMS_OUTPUT.PUT_LINE('Not-Matching');
    END IF;  
EXCEPTION
    WHEN OTHERS THEN
        DBMS_OUTPUT.PUT_LINE('Error'||SQLERRM);

END;
4

1 に答える 1