Я заполнил ассоциативный массив информацией из курсора, и теперь я хотел бы вставить ассоциативную информацию массива в таблицу. Как это возможно? Рассмотрим, что ассоциативный массив был создан из записи.Как вставить данные в таблицу с помощью ассоциативного массива?
SET SERVEROUTPUT ON
DECLARE
TYPE rec_depts_info IS RECORD(
v_dept_id departments.department_id%TYPE,
v_dept_name departments.department_name%TYPE);
TYPE typ_depts_info IS TABLE OF rec_depts_info
INDEX BY PLS_INTEGER;
CURSOR cur_depts_info_1
IS
SELECT department_id, department_name
FROM departments
WHERE department_id IS NOT NULL
AND department_name IS NOT NULL;
t_depts_info_1 typ_depts_info;
rec_depts_info_1 rec_depts_info;
v_counter_1 PLS_INTEGER := 1;
v_counter_2 PLS_INTEGER := 1;
BEGIN
v_counter_1 := v_counter_1 + 1;
FOR depts_info IN cur_depts_info_1
LOOP
t_depts_info_1(v_counter_1).v_dept_id := depts_info.department_id;
t_depts_info_1(v_counter_1).v_dept_name := depts_info.department_name;
EXIT WHEN cur_depts_info_1%NOTFOUND;
END LOOP;
LOOP
INSERT INTO tabla_pruebas
VALUES(t_depts_info_1(v_counter_2).v_dept_id,
t_depts_info_1(v_counter_2).v_dept_name)
RETURNING column_1, column_2
INTO rec_depts_info_1.v_dept_id, rec_depts_info_1.v_dept_name;
DBMS_OUTPUT.PUT_LINE('DEPT ID: ' || rec_depts_info_1(v_counter_2).v_dept_id
|| ' DEPT NAME: ' ||
rec_depts_info_1(v_counter_2).v_dept_name);
v_counter_2 := v_counter_2 + 1;
EXIT WHEN SQL%NOTFOUND;
END LOOP;
END;
Я пытаюсь вставить данные в новый таб, используя простой LOOP, но я получил следующее сообщение об ошибке:
Informe de error -
ORA-06550: line 51, column 41:
PLS-00222: no function with name 'REC_DEPTS_INFO_1' exists in this scope
ORA-06550: line 51, column 5:
PL/SQL: Statement ignored
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
*Action:
Спасибо !!!
Какова ваша интерпретация ошибки PLS-0222? –
Вы пытаетесь использовать запись в виде массива здесь 'rec_depts_info_1 (v_counter_2) .v_dept_id'. Параметры: используйте правильный массив 't_depts_info_1 (v_counter_2) .v_dept_id' или запишите' rec_depts_info_1.v_dept_id' –
Спасибо, но теперь я получил ошибку «NO DATA FOUND». – Rattlesnake