Я заполнил ассоциативный массив информацией из курсора, и теперь я хотел бы вставить информацию об ассоциативном массиве в таблицу. Как это возможно? Считайте, что ассоциативный массив создан из записи.
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;
Я пытаюсь вставить данные в новую таблицу, используя простой цикл, но получаю следующую ошибку:
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:
Спасибо!!!
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
- person Konstantin Sorokin   schedule 01.02.2017v_counter_1
начинается с 2, а второй счетчик начинается с 1. Почему вы увеличиваетеv_counter_1
вне цикла? - person Konstantin Sorokin   schedule 01.02.2017